为什么在我锁定表时给mysql错误ER_TABLE_NOT_LOCKED?

时间:2011-06-24 19:57:06

标签: mysql locking

我有一些代码在我的数据库中的表上执行LOCK TABLE。

锁定后,我从同一个表中执行SELECT。我的mysql API接口出现以下错误:

mysqlsel/db server: Table 'Mytable' was not locked with LOCK TABLES

根据一些谷歌搜索,这会转发错误代码:ER_TABLE_NOT_LOCKED

为什么此代码会生成此错误?如果我根本不锁定它,我不会指望它会给出错误,如果我将其锁定,我当然不会发现错误。

1 个答案:

答案 0 :(得分:1)

我想我通过'RTM'解决了我自己的问题,

  

需要锁定的会话必须   获得它需要的所有锁   一个LOCK TABLES语句。而   由此获得的锁被保持着   session只能访问锁定的   表。例如,在下面   陈述序列,错误   尝试访问t2时发生   因为它没有锁定在LOCK TABLES语句中:

我将多个表锁定在单独的锁定语句中,

所以,如果我这样做:

LOCK TABLES Mytable WRITE
LOCK TABLES Mytable2 WRITE

......后续SELECT FROM Mytable可能会触发此错误...