我试图在我的 PHP 脚本中运行这个命令来锁定我的表:
$PDO->exec('LOCK TABLES `tblclients` WRITE');
运行该脚本后,我尝试从 MySQL Workbench 中的该表SELECT
以验证该表是否确实已锁定。 SELECT
运行顺利,这告诉我该表实际上从未被锁定。我说得对吗?
如果我只是从 MySQL Workbench 中运行 LOCK TABLES tblclients WRITE
,然后尝试 SELECT
表确实显示为 LOCKED 并阻止 SELECT
从发射开始。
当我从我的 PHP 脚本运行该查询时,它似乎不起作用。
在这两种情况下,我都以 root
用户身份在本地运行,因此我拥有所有权限。
有什么想法吗?
最佳答案
MySQL LOCK TABLES
是每 session 操作。如果你运行类似的东西
<?php
$PDO->exec("LOCK TABLES tblclients WRITE");
exit;
?>
然后立即关闭来自PDO的mysql连接并释放锁。为了正确测试这一点,您可以尝试使用两个单独的连接并选择不锁定或 sleep
一段时间的连接,以便您可以手动运行查询.
关于PHP PDO 未锁定 MySQL 表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19381952/