使用 Laravel 5 中的 --force 进行生产时,数据库卡在使用播种机迁移

Posted

技术标签:

【中文标题】使用 Laravel 5 中的 --force 进行生产时,数据库卡在使用播种机迁移【英文标题】:Database gets stuck in migration with seeder on production with --force in Laravel 5 【发布时间】:2018-10-31 16:32:33 【问题描述】:

在 Laravel 中使用 --force 进行生产时使用播种机迁移数据库时卡住了。我对运行 Amazone linux 的 Laravel Homestead 和 EC2 AWS 的效果相同。 laravel.log 中没有消息。

它永远不会结束。如果我用<ctrl>+<c> 停止它,我会看到表已创建但播种器未运行,表是空的。

细节:

我的迁移:

public function up()

    Schema::create('products', function (Blueprint $table) 
        $table->increments('id');
        $table->string('name', 50);
        $table->decimal('price', 8, 2); //up to 999,999.99
    );

    Artisan::call('db:seed', ['--class' => 'ProductsSeeder']);

我这样称呼它:

$ php artisan migrate --force

我的 .env

#APP_ENV=local

APP_DEBUG=false

数据库种子。

class ProductsSeeder extends Seeder

    public function run()
    
        DB::table('products')->insert([
            'id'                   => 1,
            'name'                 => 'super product',
            'price'                => 999.99,
        ]);
    

测试 Laravel 5.6

【问题讨论】:

你能发布播种代码吗? 发布了播种机代码,但遗憾的是,请求播种机的评论吸引了 2 次投票,而与播种机代码无关。 @YevgeniyAfanasyev 很难让其他人在没有访问权限的情况下说出这一点 使用-vvv详细标志时没有输出?我想知道在这种情况下您是否还需要将 --force 标志添加到种子调用中,因为您在迁移中使用它? @YevgeniyAfanasyev 添加了答案。 【参考方案1】:

尝试在迁移命令中包含 -vvv 标志,这会增加任何消息的详细程度,这可能会发现问题。

--verbose (-v|vv|vvv) 增加消息的详细程度:1为正常输出,2为更详细输出,3为调试

$ php artisan migrate --force

至于问题本身,请尝试在您的 db:seed 调用中包含 --force 标志,因为您已将其包含在迁移中。

Artisan::call('db:seed', ['--class' => 'ProductsSeeder', '--force' => true,]);

【讨论】:

'--force' => true, 确实有帮助。谢谢。 '--force' => true 在不使用 --force 调用迁移的情况下不起作用。【参考方案2】:

我在运行 php artisan migrate 时遇到了同样的问题,但没有任何反应,一直卡住。 --force 或冗长无济于事。

我遇到的问题是 .env 中的DB_PORT 设置不正确。

【讨论】:

我有同样的问题,即使使用 simg --force 也会卡住。我检查了端口,它指向正确的端口(3306)。还有其他想法吗? @MrCujo 我也有同样的问题

以上是关于使用 Laravel 5 中的 --force 进行生产时,数据库卡在使用播种机迁移的主要内容,如果未能解决你的问题,请参考以下文章

Laravel 工匠优化最佳实践

Laravel 5.5 将会要求 PHP 7.0+

Laravel 5.5 中的多字段排序

Laravel 5 使用中的问题记录(持续更新)

VerifyCsrfToken 中的 TokenMismatchException - Laravel 5.1

laravel 5.5中的payhere支付网关集成[关闭]