Я использую php artisan queue:work --tries=3 для некоторых почтовых заданий, но в файле журнала все еще появляется эта ошибка:
[2018-11-02 03:22:02] local.ERROR: SQLSTATE[22003]: Numeric value out of range: 1264 Out of range value for column 'attempts' at row 1 (SQL: updatejobssetreserved_at= 1541128922,attempts= 256 whereid= 767) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 22003): SQLSTATE[22003]: Numeric value out of range: 1264 Out of range value for column 'attempts' at row 1 (SQL: updatejobssetreserved_at= 1541128922,attempts= 256 whereid= 767) at /var/www/html/project/vendor/laravel/framework/src/Illuminate/Database/Connection.php:664, Doctrine\\DBAL\\Driver\\PDOException(code: 22003): SQLSTATE[22003]: Numeric value out of range: 1264 Out of range value for column 'attempts' at row 1 at /var/www/html/project/vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/PDOStatement.php:144, PDOException(code: 22003): SQLSTATE[22003]: Numeric value out of range: 1264 Out of range value for column 'attempts' at row 1 at /var/www/html/project/vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/PDOStatement.php:142)
[stacktrace]
В действительности задание создается в таблице заданий, но не обрабатывается. Как я могу решить эту проблему?
Вы создали таблицу failed_jobs, как показано в документации? laravel.com/docs/5.7/queues#dealing-with-failed-jobs
@TravisBritz Да, там нет записей.
Вы уверены, что рабочие работают с опцией --tries=3, и ни одно из заданий не имеет свойства $tries больше 255 или метода retryUntil(), определенного для класса?






Увеличьте значение поля attempts
Хотите подробнее рассказать об этом?
@andromeda: Поскольку значение (размер) типа данных attemps меньше, чем ваш размер входного значения ИЛИ, пожалуйста, проверьте это Ссылка для получения дополнительных сведений.
Пожалуйста, объясните, почему вы думаете, что это решает проблему, и сделайте это, отредактировав ответ, а не помещая ссылку в раздел комментариев.
SQLSTATE[22003] Numeric value out of range: 1264 Out of range value for column 'attempts' at row 1
Похоже, ваше поле attemets установлено на TINYINT max 255, я могу сказать из-за этого бита.
SQL: updatejobssetreserved_at= 1541128922,attempts= 256 whereid= 767
И потому что я знаю, что TinyInt может содержать 255 (потому что я только что погуглил ... ха-ха). На самом деле, вероятно, определяется как INT(1) UNSIGEND.
Итак, вы хотите изменить это на> TINYINT LIKE a NOTSOTINYINT .... :) Я имею в виду SMALLINT.
PS обманул
Что это за ошибка базы данных
SQLSTATE[22003] Numeric value out of range: 1264 Out of range value for column 'attempts' at row 1Вероятно, ваше поле слишком мало для хранения данных или вы помещаете подписанный INT в поле без знака. Например, установка отрицательного значения в беззнаковом поле.