我需要清除哪些Laravel缓存才能删除有关丢失迁移文件的错误?

时间:2016-03-04 17:30:26

标签: php laravel database-migration laravel-5.2 artisan

我的应用中有几次桌面迁移。表格是:

  • 技能
  • 媒体
  • 注释

people与其他每个表之间存在一对多的关系。

// The people table definition

Schema::create('people', function (Blueprint $table) {
    $table->uuid('id');
    $table->primary('id');
    ...
    $table->timestamps();
});


// the skill table definition with the foreign key constraint referencing people

Schema::create('skills', function (Blueprint $table) {
    $table->uuid('id');
    $table->primary('id');
    $table->uuid('person_id');
    $table->foreign('person_id')
            ->references('id')->on('people')
            ->onDelete('cascade');
    ...
    $table->timestamps();
});

当我通过artisan创建迁移时,我在skills迁移之前意外创建了people迁移文件。

这导致了一个问题,因为当您运行php artisan migrate时,文件将按时间戳顺序触发,如果在定义外键约束之前未建立主键,则会出现错误,例如:

文件:

2016_02_24_174227_create_people_table.php

文件后

2016_02_24_174221_create_skills_table.php

因为skills文件名称中的时间戳前缀较小(17:42:21来自17:42:27之前)。这意味着skills中的外键约束正在寻找people中尚不存在的主键。

为了解决这个问题,我将文件2016_02_24_174227_create_people_table.php重命名为2016_02_24_170000_create_people_table.php

这个修复工作正常,但现在每当我php artisan migrate:refresh我的桌子时,我都会收到一个错误,说工匠仍然在寻找老人档案:

artisan error

我尝试使用php artisan cache:clear清除应用程序缓存,但我仍然收到错误消息。

是否需要清除特定缓存以删除对原始迁移文件的引用?

2 个答案:

答案 0 :(得分:10)

这不是缓存问题。你只需要再次运行composer:

composer dump-autoload

答案 1 :(得分:2)

回滚迁移并检查

migrate:rollback