为什么以下查询适用于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之间的不一致。
任何帮助表示赞赏!
答案 0 :(得分:1)
有些人猜对了:这是最近推出的一个错误(现已确认)。
有关详细信息,请查看mariadb问题跟踪器: https://jira.mariadb.org/browse/MDEV-9516
关于bugtracker问题似乎已在10.1.13修复。