Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/56.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
php崩溃后mysql表被锁定_Php_Mysql_Crash_Innodb_Table Locking - Fatal编程技术网

php崩溃后mysql表被锁定

php崩溃后mysql表被锁定,php,mysql,crash,innodb,table-locking,Php,Mysql,Crash,Innodb,Table Locking,我有一个MySQL数据库和一个innoDB表。我有一个php页面,可以连接、锁定表、执行一些更新,然后解锁表。PHP页面通过wamp由apache提供 php页面将文件上载到数据库。我决定上传一个比分配给PHP的内存大的文件来模拟系统崩溃。这肯定会导致此错误:允许的内存大小18874368字节已用尽(尝试分配6176754字节)。在此之后,更新期间锁定的表仍然被锁定 在此错误后尝试访问表时出现的错误是:表“a”未使用锁表锁定。我知道这是一个锁问题,因为我会弹出一个SQL提示符,尝试从被锁定的表中

我有一个MySQL数据库和一个innoDB表。我有一个php页面,可以连接、锁定表、执行一些更新,然后解锁表。PHP页面通过wamp由apache提供

php页面将文件上载到数据库。我决定上传一个比分配给PHP的内存大的文件来模拟系统崩溃。这肯定会导致此错误:允许的内存大小18874368字节已用尽(尝试分配6176754字节)。在此之后,更新期间锁定的表仍然被锁定

在此错误后尝试访问表时出现的错误是:表“a”未使用锁表锁定。我知道这是一个锁问题,因为我会弹出一个SQL提示符,尝试从被锁定的表中进行选择,它只是等待,就像表被锁定时一样。如果我随后终止Apache进程,我试图在SQL提示符中运行的语句将最终通过。我的猜测是,当我终止Apache进程时,MySQL意识到由于连接被切断,表锁应该被释放


有什么想法吗?

好的,所以读了我的帖子后,我意识到我回答了自己的问题。即使在崩溃过程中,连接仍然保持,因为我使用mysql_pconnect()连接到数据库。我把它改成了mysql_connect(),效果很好。对不起,如果我浪费了任何人的时间,但我希望这有助于别人


--Joshua

您可以使用关机功能解锁表格:

Qoute来自:

如果客户机会话的连接终止,无论是正常终止还是异常终止,服务器都会隐式释放会话持有的所有表锁(事务性锁和非事务性锁)。如果客户端重新连接,锁将不再有效。此外,如果客户端有一个活动事务,则服务器在断开连接时回滚该事务,如果发生重新连接,则新会话将在启用自动提交的情况下开始

由于您的连接在页面执行并完成/释放后是持久的,因此连接仍然存在


你不应该让连接成为我的错误-我正在考虑关闭功能。回答被打断了。