我正在编写一个锁定表的 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
only a 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
发行了。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)