设置会话变量

时间:2016-02-03 20:47:34

标签: 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之间的不一致。

任何帮助表示赞赏!

1 个答案:

答案 0 :(得分:1)

有些人猜对了:这是最近推出的一个错误(现已确认)。

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

更新(2016-03-21)

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