2017-11-09 4 views
0

Meine Website stellt E-Mails in die Warteschlange, die Jobs an die Tabelle jobs senden. Ich denke, der E-Mail-Server hat ein Problem und kann keine E-Mails senden, so dass die Jobs an der Job-Tabelle hängen bleiben. Nun, vielleicht gibt es zu viele Arbeitsplätze, und ich erhalte diese Fehlermeldung:Wie werden alle Jobs in der Warteschlange entfernt, weil sie Fehler verursachen?

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) 

Also ich frage mich, wie spülen ich alle Jobs in der Warteschlange, den Tisch abzuräumen? Ich kann nicht auf die Datenbank zugreifen, um die Daten in der Tabelle zu entfernen. Gibt es dafür eine Befehlszeile? Ich habe keine fehlgeschlagene Queue-Tabelle.

Antwort

2

Angenommen, Sie Datenbanktreiber verwenden, können Sie verwenden:

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

alle Jobs zu löschen.

Die andere Sache ist, dass Sie immer mit Versuchen Warteschlange Arbeiter-Set ausgeführt werden soll:

php artisan queue:work --tries=3 

Denken Sie auch daran, dass, wenn Sie Ihren Anwendungscode ändern, sollten Sie Ihre Mitarbeiter neu starten:

php artisan queue:restart 

(Ich nehme an, Sie benutzen einen Vorgesetzten, der die Arbeiter wieder anleitet).

Verwandte Themen