php – Laravel – 超出锁定等待超时
发布时间:2020-12-14 19:48:10 所属栏目:大数据 来源:网络整理
导读:我的代码中有很多事务,如果在其中一个事务中执行时发生错误而没有触发提交或回滚,则数据库被锁定,任何后续访问数据库的尝试都会导致: production.ERROR:PDOException:SQLSTATE [HY000]:一般错误:1205超出锁定等待超时;尝试重新启动/home/forge/default/
我的代码中有很多事务,如果在其中一个事务中执行时发生错误而没有触发提交或回滚,则数据库被锁定,任何后续访问数据库的尝试都会导致:
production.ERROR:PDOException:SQLSTATE [HY000]:一般错误:1205超出锁定等待超时;尝试重新启动/home/forge/default/vendor/laravel/framework/src/Illuminate/Database/Connection.php:390中的事务 在控制器中: DB::beginTransaction(); try { //Code that uses exec() to process some images. <-- If code breaks here,then the above error appears on subsequent requests. //Code that accesses the database } catch(Exception $e){ DB::rollback(); throw $e; } DB::commit(); 所以即使是php工匠迁移:刷新或php工匠迁移:重置也停止工作.我该怎么办呢?
我看到重复的问题
How to debug Lock wait timeout exceeded on MySQL? 您应该考虑通过设置innodb_lock_wait_timeout来增加InnoDB的锁定等待超时值,默认为50秒 mysql> show variables like 'innodb_lock_wait_timeout'; +--------------------------+-------+ | Variable_name | Value | +--------------------------+-------+ | innodb_lock_wait_timeout | 50 | +--------------------------+-------+ 1 row in set (0.01 sec) 您可以使用此行永久地在/etc/my.cnf中将其设置为更高的值 [mysqld] innodb_lock_wait_timeout=120 并重启mysql.如果此时无法重启mysql,请运行以下命令: SET GLOBAL innodb_lock_wait_timeout = 120`; 您也可以在会话期间设置它 SET innodb_lock_wait_timeout = 120; (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |