全局表锁mysql

时间:2015-09-09 13:25:24

标签: mysql

我想用我的php脚本锁定一个mysql表,以便在原始脚本解锁表之前,不允许继续尝试在该表上执行写入查询的其他脚本。

怎么做? (希望有一些失败的安全方法)。

我尝试过这个并不起作用:

test1.php

<?php

include 'init.php';

$q = "LOCK TABLE vars WRITE";
mysql_query($q);

echo "Table locked for writing (you wish)\n";

sleep(10);

$q = "UNLOCK TABLE vars";
mysql_query($q);

?>

test2.php

<?php

include 'init.php';

$q = "INSERT INTO vars VALUES ('test', '2016-01-01 00:00:00')";
$rows = mysql_query($q);

echo "Done!";

?>
  1. 我执行test1.php。
  2. 两秒钟后(但不早于接收'你希望'消息fronm test1.php)我执行test2.php。
  3. 结果:立即添加新行,而不是8秒后添加。所需结果:8秒后添加新行。

1 个答案:

答案 0 :(得分:0)

测试示例实际上可以正常工作 - 我只需要正确配置运行这些脚本的mysql yuser的权限。有问题的mysql用户没有LOCK TABLES特权,test1.php中的第一个语句实际上是在发出一条我没有检查的无提示错误消息。