如何删除所有排队的作业,因为它导致错误?

时间:2017-11-09 21:50:38

标签: laravel laravel-5 laravel-queue

我的网站将电子邮件发送到jobs表的队列。我认为电子邮件服务器有一些问题,它无法发送电子邮件,因此作业停留在作业表。现在可能有太多的工作,我收到此错误消息:

Next exception 'Illuminate\Database\QueryException' with message 'SQLSTATE[22003]: Numeric value out of range: 1264 Out of range value for column 'attempts' at row 1 (SQL: update `jobs` set `reserved_at` = 1510263884, `attempts` = 256 where `id` = 342)' in /var/www/vhosts/parcgilley.com/httpdocs/vendor/laravel/framework/src/Illuminate/Database/Connection.php:647
#0 /var/www/vhosts/parcgilley.com/httpdocs/vendor/laravel/framework/src/Illuminate/Database/Connection.php(607): Illuminate\Database\Connection->runQueryCallback('update `jobs` s...', Array, Object(Closure))
#1 /var/www/vhosts/parcgilley.com/httpdocs/vendor/laravel/framework/src/Illuminate/Database/Connection.php(477): Illuminate\Database\Connection->run('update `jobs` s...', Array, Object(Closure))
#2 /var/www/vhosts/parcgilley.com/httpdocs/vendor/laravel/framework/src/Illuminate/Database/Connection.php(416): Illuminate\Database\Connection->affectingStatement('update `jobs` s...', Array)

所以我想知道如何清除所有排队的作业以清除表格?我无法访问数据库以删除表中的数据,所以有没有命令行这样做?我没有失败的队列表。

2 个答案:

答案 0 :(得分:4)

假设您使用的是数据库驱动程序,可以使用:

DB::table('jobs')->delete();

删除所有作业。

另一件事是你应该总是运行尝试设置的队列工作者:

php artisan queue:work --tries=3

还要记住,无论何时更改应用程序代码,都应该重新启动工作人员:

php artisan queue:restart

(我假设您使用将再次启动工作人员的主管。)

答案 1 :(得分:1)

你可以使用

<块引用>

php 工匠修补匠

然后

<块引用>

DB::table('jobs')->delete();

这项工作!!!