在MariaDB

时间:2018-04-12 08:51:36

标签: mysql mariadb

MySQL中的GET_LOCK(),接受超时的负值,并解释为无限超时。

MySQL文档: GET_LOCK()

  

尝试使用超时秒的超时来获取具有字符串str给出的名称的锁。负超时值表示无限超时。锁是独家的。由一个会话持有,其他会话无法获得同名的锁。

但在MariaDB中,我无法找到复制无限超时的方法,因为文档中没有指定。

MariaDB文档: GET_LOCK()

  

GET_LOCK(str,timeout) [...]   str对GET_LOCK()和相关函数不区分大小写。如果str是空字符串或NULL,则GET_LOCK()返回NULL并且不执行任何操作。 timeout被四舍五入到最接近的整数。

我可以在MariaDB中使用MySQL的无限超时来复制GET_LOCK()吗?

1 个答案:

答案 0 :(得分:1)

MariaDB不接受GET_LOCK的负值:

MariaDB [test]> do get_lock('test', -1);
Query OK, 0 rows affected, 1 warning (0.00 sec)

MariaDB [test]> show warnings;
+---------+------+-----------------------------------------------------+
| Level   | Code | Message                                             |
+---------+------+-----------------------------------------------------+
| Warning | 1411 | Incorrect timeout value: '-1' for function get_lock |
+---------+------+-----------------------------------------------------+
1 row in set (0.00 sec)

您可以使用0xffffffff来模拟MariaDB中的相同行为:

MariaDB [test]> do get_lock('test', 0xffffff);
Query OK, 0 rows affected (1.85 sec)