mysql - 设置 session 变量时 MariaDB 类型错误

标签 mysql session mariadb system-variable

为什么以下查询适用于 Maria DB (10.1.9)...

  • SET SESSION wait_timeout = 28000;
  • SET SESSION wait_timeout = @@wait_timeout;
  • SELECT GREATEST(28000, @@wait_timeout);

...但那个不是?

  • SET SESSION wait_timeout = GREATEST(28000, @@wait_timeout)

它抛出一个类型错误:

#1232 - Incorrect argument type to variable 'wait_timeout`

尽管可以通过替换 @wait_timeout 来解决此错误与 CAST(@@wait_timeout AS INT)CONVERT(@@wait_timeout, SIGNED) (后者也适用于 MySQL)到查询 我想知道为什么第二个和第三个查询有效。

这是怎么回事?它不可能是 GREATEST 操作,因为查询 3 有效并且它不能是不同的变量类型,因为(隐式)转换将在查询 2 中失败(无论如何它应该具有相同的类型)。其他系统变量也会发生同样的事情。

顺便说一句:相同的查询在 MySQL 下工作(在 MySQL 5.6 版的 SQLfiddle 中尝试过)所以这是 MariaDB 和 MySQL 之间的不一致。

感谢任何帮助!

最佳答案

正如一些人猜对的那样:这是最近引入的一个错误(现已确认)。

有关更多详细信息,请查看 mariadb 问题跟踪器: https://jira.mariadb.org/browse/MDEV-9516

更新 (2016-03-21)

关于 bugtracker,问题似乎已在 10.1.13 中修复。

关于mysql - 设置 session 变量时 MariaDB 类型错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35187378/

相关文章:

mysql - Rails 3. 在 SQL 中检查真值

php - 阻止访问者再次点击链接,直到 24 小时到期

mysql - 长 LOCK TABLES 期间与 MySQL 的通信链路失败

mysql - 最佳实践 - 在本地 mysql 服务器/RDS 上开发?

mysql - SQL 在一个查询中生成 2 种不同的日期类型

php - 无法使用 PHP 使 SQL 更新工作

Symfony2 phpunit 功能测试自定义用户身份验证在重定向后失败( session 相关)

ios - 从 URLSession 返回数据并保存在属性变量中

java - Spring Security 仅用一条路径处理不同用户

mysql - SQL:在双重多对多关系中查找交集