Php Laravel eloquent delete()创建的大量行锁定等待超时超出异常
在我的网站上使用laravel,我试图安排一个队列,定期删除1000万行 拥有Php Laravel eloquent delete()创建的大量行锁定等待超时超出异常,php,mysql,laravel,eloquent,delete-row,Php,Mysql,Laravel,Eloquent,Delete Row,在我的网站上使用laravel,我试图安排一个队列,定期删除1000万行 拥有 Data::where('fetch_stamp','Lock wait timeout extended通常意味着表被锁定,通常是一个长时间运行的进程。发生这种情况时,您需要登录数据库并执行show processlist;以查看是否有任何长时间运行的进程。您可能还需要在fetch_stamp列上添加索引,以便t它可以更快地找到记录。是的,添加了一个索引。长时间运行的过程实际上就是这个特定的删除过程,但失败了。只是
Data::where('fetch_stamp','Lock wait timeout extended
通常意味着表被锁定,通常是一个长时间运行的进程。发生这种情况时,您需要登录数据库并执行show processlist;
以查看是否有任何长时间运行的进程。您可能还需要在fetch_stamp
列上添加索引,以便t它可以更快地找到记录。是的,添加了一个索引。长时间运行的过程实际上就是这个特定的删除过程,但失败了。只是我在文档中找不到任何关于此删除()的线索方法是有效处理删除数据库中数百万行的好方法,因为它可能会抛出一系列模型删除/删除事件,因此使用Elount模型可能不是最好的方法。您最好使用QueryBuilder,DB::table
。我还没有测试过它,所以我不能说是certain.谢谢你同样的失败照亮\Database\QueryException:SQLSTATE[HY000]:一般错误:超过1205锁等待超时;尝试重新启动事务(SQL:delete fromdata\u sth
wherefetch\u stamp
<2018-09-08 20:55:34)我想我仍然需要深入研究文档…这个查询经常运行吗?
PDOException: SQLSTATE[HY000]: General error: 1205 Lock wait timeout exceeded; try restarting transaction in /home/forge/website.com/vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/PDOStatement.php:142