MySQL锁定表

MySQL锁定表,mysql,concurrency,locking,phpmyadmin,Mysql,Concurrency,Locking,Phpmyadmin,我试图做一个简单的锁定,防止任何其他请求读取或写入单个表。在phpmyadmin中键入和执行代码后的结果: LOCK TABLES mytable WRITE;# MySQL returned an empty result set (i.e. zero rows). INSERT INTO mytable (field1, field2) VALUES ('21', '123123');# 1 row(s) affected. 锁坏了,插销坏了。显然工作不正常…我做错了什么?我一直在关注M

我试图做一个简单的锁定,防止任何其他请求读取或写入单个表。在phpmyadmin中键入和执行代码后的结果:

LOCK TABLES mytable WRITE;# MySQL returned an empty result set (i.e. zero rows).
INSERT INTO mytable (field1, field2) VALUES ('21',  '123123');# 1 row(s) affected.

锁坏了,插销坏了。显然工作不正常…我做错了什么?我一直在关注MySQL文档,这似乎是他们说要做的…

当您的会话正在处理表时,锁会阻止其他会话访问表。如果将锁放在表上也将自己的代码锁定在外面,那么锁就没有意义了

您必须使用两个连接来测试它。一个连接进行锁定,另一个连接尝试进行插入


在phpmyadmin中执行所有操作都是通过一个连接完成的,这不是有效的测试。

为什么说锁不起作用?lock tables语句不返回结果集。哦,我明白了。写也会阻止读吗?是的。否则,执行读取的其他会话可能会获得“过时”数据。考虑一个蹩脚的优质银行系统,你锁定某人的帐户记录借记一个交易,而另一些会话正在做相同的读取,并且两者都得到相同的“原始”余额。现在,你有两个借方在原来的100美元之外,最后余额错误。