繁体   English   中英

表[tablename]未锁定

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM