尝试在锁定的表上运行sql时PHP脚本挂起

时间:2012-06-07 18:25:50

标签: php mysql debugging mysqli

所以我使用的是mysqli,当我尝试执行以下查询时:

UPDATE Security.Users SET firstName = 'RYANTEST' WHERE id = '1'

虽然Security.Users表上有一个锁定,但我的php脚本永远挂起(到目前为止,我测量的最长时间约为11分钟)。

这不应该返回错误或至少超时吗?

我试过在mysql上设置interactive_timeout和waiting_timeout没有运气。我也试过将php脚本设置为3秒后超时,再次没有运气(直接在脚本中使用set_time_limit())。

我不确定我还能尝试什么。

2 个答案:

答案 0 :(得分:0)

不,这是正常行为。如果某个表被锁定,那么还需要锁定表的所有其他请求将等待轮到他们,直到上一次锁定被释放。

这是为了确保竞争环境中的数据完整性。

答案 1 :(得分:0)

看看这篇SO帖子,它描述了如何为mysql长时间运行的查询设置超时

How can I stop a MySQL query if it takes too long?