2013-11-20 31 views
1

我有一个调度表,我需要锁定然后读取。目前我正在试图做到这一点:Mysql表锁别名不工作

LOCK TABLES db.schedule AS j_read READ; 

SELECT * FROM db.schedule as j_read; 

UNLOCK TABLES; 

当我运行此我得到的错误:

Error Code: 1100. Table 'j_read' was not locked with LOCK TABLES

我已经在MySQL的表锁文件mysql docs,但我不能弄清楚我们这是为什么不为我工作。如果我没有别名,它可以像这样工作

LOCK TABLES db.schedule READ; 

SELECT * FROM db.schedule; 

UNLOCK TABLES; 

任何想法,为什么这不起作用或如何正确地做到这一点?

回答

2

我找到了完成这项工作的方法。需要获取别名和表本身的锁

LOCK TABLES db.schedule READ,db.schedule AS j_read READ; 

SELECT * FROM db.schedule as j_read; 

UNLOCK TABLES; 
0

看看这个文档块,你仍然需要从表中选择,但引用你的锁别名。你正在寻找最后一行。

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; 
+0

对不起,我错过了在我的文章,这实际上是我所做的,它仍然抛出我同样的错误。立即查看更新版本 – Jake