[英]Table [tablename] is not locked
我正在编写一个锁定表的MySQL查询:
"LOCK TABLE table_1 WRITE"
之后,我正在执行一些函数,并在其中一个函数中,我正在另一个我没有锁定的表上执行另一个查询:
"SELECT * FROM completely_different_table_2"
然后我得到以下错误消息作为结果:
Table 'completely_different_table_2' was not locked with LOCKED TABLES
的确,MySql告诉我表没有锁定是正确的。 但为什么会抛出错误? 任何想法我怎么能解决这个问题?
提前致谢。
您必须锁定要使用的每个表 ,直到LOCK
被释放。 你可以给completely_different_table_2
只有一个READ LOCK
,它允许同时锁定其他进程读取该表:
LOCK TABLES table_1 WRITE, completely_different_table_2 READ;
PS:MySQL有理由这样做。 如果您请求LOCK
,则需要冻结数据的一致状态。 如果从读取数据completely_different_table_2
你里面LOCK
,您的数据写入到table_1
会以某种方式依赖于这个其他表。 因此,您不希望任何人在您的LOCK
期间更改此表,并为此第二个表请求READ LOCK
。 如果写入table_1
的数据不依赖于另一个表,则只需在LOCK
释放LOCK
查询。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.