PHP PDO未锁定MySQL表
我试图在PHP脚本中运行此命令以锁定我的表:PHP PDO未锁定MySQL表,php,mysql,pdo,Php,Mysql,Pdo,我试图在PHP脚本中运行此命令以锁定我的表: $PDO->exec('LOCK TABLES `tblclients` WRITE'); 运行该脚本后,我尝试从MySQL Workbench内的表中选择,以验证该表是否已实际锁定。SELECT运行平稳,这告诉我该表实际上从未被锁定。我说得对吗 如果我只是从MySQL Workbench内部运行LOCK TABLES tblclients WRITE,然后尝试SELECT该表确实显示为已锁定,并防止SELECT触发 当我从PHP脚本运行该查
$PDO->exec('LOCK TABLES `tblclients` WRITE');
运行该脚本后,我尝试从MySQL Workbench内的表中选择,以验证该表是否已实际锁定。SELECT
运行平稳,这告诉我该表实际上从未被锁定。我说得对吗
如果我只是从MySQL Workbench内部运行LOCK TABLES tblclients WRITE
,然后尝试SELECT
该表确实显示为已锁定,并防止SELECT
触发
当我从PHP脚本运行该查询时,它似乎不起作用
在这两种情况下,我都以root
用户的身份在本地运行,因此我拥有所有权限
有什么想法吗?MySQL
锁表
是一种每会话操作。如果你像这样跑
<?php
$PDO->exec("LOCK TABLES tblclients WRITE");
exit;
?>
然后立即关闭来自PDO的mysql连接,并释放锁。为了正确地测试这一点,您可以尝试使用两个单独的连接,并选择一个不锁定的连接或一段时间内睡眠的连接,以便手动运行查询。您确定查询成功吗?结果如何?PDO是否引发异常?@ExplosionPills查询
锁表tblclients WRITE
没有失败。我没有收到任何错误,PDO也不会抛出任何异常。exec
的返回值是多少?嗯,它返回0
。。。所以我想无论什么原因,它都是失败的0=失败?我的exec
语句返回0
,因此出于某种原因,它似乎失败了,并且从未真正锁定table@FastTrack你确定PDO用户有锁授权吗?是的-我刚刚运行了SHOW grants
,它返回了GRANT将**上的所有权限授予给带有GRANT的'root'@'localhost'OPTION
@FastTrack-锁表
语句不改变行,它只返回零。@alvarog.Vicario你说得对!我仍在苦苦思索为什么我可以在脚本仍在运行时执行SELECTS/UPDATES
。。。我锁定表格,运行数千行更新
,同时,我仍然可以在该表格上选择/更新
。。。