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()吗?
答案 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)