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

尝试在锁定的表上运行sql时,PHP脚本挂起,php,mysql,debugging,mysqli,Php,Mysql,Debugging,Mysqli,因此,当我尝试执行以下查询时,我正在使用mysqli: UPDATE Security.Users SET firstName = 'RYANTEST' WHERE id = '1' 虽然Security.Users表有一个锁,但我的php脚本永远挂起(到目前为止,我测量的最长时间大约为11分钟) 这不应该返回错误或至少超时吗 我尝试在mysql上设置交互式超时和等待超时,但没有成功。我还尝试过将php脚本设置为3秒后超时,但再次失败(直接在脚本中使用set_time_limit()) 我不知

因此,当我尝试执行以下查询时,我正在使用mysqli:

UPDATE Security.Users SET firstName = 'RYANTEST' WHERE id = '1'
虽然Security.Users表有一个锁,但我的php脚本永远挂起(到目前为止,我测量的最长时间大约为11分钟)

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

我尝试在mysql上设置交互式超时和等待超时,但没有成功。我还尝试过将php脚本设置为3秒后超时,但再次失败(直接在脚本中使用set_time_limit())


我不知道还能尝试什么。

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


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

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


如果有一个需要一个小时的问题,那就意味着我的脚本将挂起那么长时间。我希望至少能够在某一点之后将错误输出给用户。我真的对此无能为力吗?但是,如果您的用户有足够的权限,您可能希望检测表上的锁。我不知道这是否可能获得锁定/解锁标志,但我知道如何获得更多或更少的信息。。。给我一分钟看看这个帖子: