Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么我的Laravel失败作业没有显示在失败作业表中?_Laravel - Fatal编程技术网

为什么我的Laravel失败作业没有显示在失败作业表中?

为什么我的Laravel失败作业没有显示在失败作业表中?,laravel,Laravel,我按照文档创建了一个作业,并在句柄()中强制失败: 结果是出现预期的失败作业,但失败作业未显示在failed_job表中。处理时,它将显示在作业表中 [2020-12-15 07:37:18][6] Processing: App\Jobs\IntroEmailJob [2020-12-15 07:37:18][6] Failed: App\Jobs\IntroEmailJob 拉威尔8.0 编辑: 在日志中找到: General error: 1364 Field 'uuid' do

我按照文档创建了一个作业,并在句柄()中强制失败:

结果是出现预期的失败作业,但失败作业未显示在failed_job表中。处理时,它将显示在作业表中

[2020-12-15 07:37:18][6] Processing: App\Jobs\IntroEmailJob
[2020-12-15 07:37:18][6] Failed:     App\Jobs\IntroEmailJob
拉威尔8.0

编辑: 在日志中找到:

General error: 1364 Field 'uuid' doesn't have a default value
我创建了failed_jobs表,正如文档所解释的:

php artisan queue:failed-table

php artisan migrate

我将failed_jobs表中的uuid字段更改为默认值Null,现在它可以工作了


有人能解释为什么artisan命令不考虑这一点以及uuid的用途吗?

队列\u FAILED\u驱动程序设置为
数据库uuid将解决您的问题


我将failed_jobs表中的uuid字段更改为默认值Null,现在它可以工作了

您需要在~/app/config/queue.php文件中添加一个参数
driver
,其值为
database uuids

    'failed' => [
        'driver' => 'database-uuids',
        'database' => env('DB_CONNECTION', 'mysql'),
        'table' => 'failed_jobs',
    ],
Laravel将使用能够创建UUID的数据库UUIDFailedJobProvider


接下来,您将使用
php artisan队列:重试失败作业的\u UUID

只有在所有重试都已完成后,才会将其写入
failed\u jobs
表,您允许重试多少次?您可以阅读更多关于它的内容。表中仍然没有条目。顺便问一下,默认的尝试次数是多少?@mjpsr11自Laravel6.0以来,默认的尝试次数是一次。较旧版本的Laravel尝试了无限期(尽管通常在255次尝试后导致数据库值异常)。如果您升级了现有项目,但没有使
queue.php
config文件与最新版本保持同步,然后在升级后运行
artisan queue:failed table
,您可能最终处于配置没有“驱动程序”=>“数据库uuid”
的状态。基本上,您有较新的数据库模式,但有较旧的配置,这使得Laravel尝试使用较旧版本的一些行为(在添加uuid字段之前)。新项目不会遇到这个问题,升级之前发布并迁移失败作业(不更新配置)的旧项目也不会遇到这个问题。这是我的配置:
'driver'=>env('QUEUE\u FAILED\u driver','database uuids')
是否可以在
QUEUE\u FAILED\u driver
环境变量中设置某些内容,或者缓存配置?(
php-artisan-config:clear
)更仔细地阅读您的评论,我可能有这种情况。我确实将Laravel升级到了8.0,之后可能已经迁移了队列表。我相信当变量为空时,这已经是默认值,这可能表明他们的配置文件根本没有设置
driver
字段,这意味着它没有检查
queue\u FAILED\u driver
变量。laravel附带的队列配置的旧版本不包括驱动程序字段。
    'failed' => [
        'driver' => 'database-uuids',
        'database' => env('DB_CONNECTION', 'mysql'),
        'table' => 'failed_jobs',
    ],