1

我试图在我的 PHP 脚本中运行这个命令来锁定我的表:

$PDO->exec('LOCK TABLES `tblclients` WRITE');

运行该脚本后,我尝试SELECT从 MySQL Workbench 中的该表中验证该表是否已实际锁定。运行顺利,这SELECT告诉我桌子实际上从未被锁定。我对吗?

如果我只是LOCK TABLES tblclients WRITE从 MySQL Workbench 内部运行,则尝试SELECT该表确实显示为 LOCKED 并防止SELECT触发。

当我从我的 PHP 脚本运行该查询时,它似乎不起作用。

在这两种情况下,我都以用户身份在本地运行,root因此我拥有所有权限。

有任何想法吗?

4

1 回答 1

2

MySQLLOCK TABLES是按会话操作的。如果你运行类似的东西

<?php
$PDO->exec("LOCK TABLES tblclients WRITE");
exit;
?>

然后来自 PDO 的 mysql 连接立即关闭,锁将被释放。为了正确测试这一点,您可以尝试使用两个单独的连接并选择一个未锁定 sleep一段时间的连接,以便您可以手动运行查询。

于 2013-10-15T13:15:12.243 回答