为什么以下查询适用于 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/