我有一个排程表,我需要把它锁起来,然后读出来。我现正尝试这样做:
LOCK TABLES db.schedule AS j_read READ;
SELECT * FROM db.schedule as j_read;
UNLOCK TABLES;当我运行这个程序时,我会得到一个错误:
错误代码: 1100。表'j_read‘没有用锁表锁定
我已经浏览了mysql表锁文档mysql文档,但我不明白为什么这对我不起作用。如果我没有化名,它就会像这样工作
LOCK TABLES db.schedule READ;
SELECT * FROM db.schedule;
UNLOCK TABLES;有什么想法,为什么这不起作用,或如何正确地做到这一点?
发布于 2013-11-20 22:04:52
我找到了让这件事成功的方法。需要同时获得别名和表本身的锁。
LOCK TABLES db.schedule READ,db.schedule AS j_read READ;
SELECT * FROM db.schedule as j_read;
UNLOCK TABLES;发布于 2013-11-20 21:51:01
查看这段文档,您仍然需要从表中进行选择,但是要引用您的锁别名。你在找最后一句。
mysql> LOCK TABLE t AS myalias READ;
mysql> SELECT * FROM t;
ERROR 1100: Table 't' was not locked with LOCK TABLES
mysql> SELECT * FROM t AS myalias;https://stackoverflow.com/questions/20107225
复制相似问题