2013-11-20 62 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