我需要清除什么 Laravel 缓存才能消除有关丢失迁移文件的错误?
What Laravel cache do I need to clear to remove error about missing migration file?
我在我的应用程序中对表格进行了几次迁移。这些表格是:
- 人
- 技能
- 媒体
- 备注
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
创建迁移时,我不小心在 people
迁移之前创建了 skills
迁移文件。
这导致了一个问题,因为当您 运行 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 仍在以某种方式寻找旧人文件:
我尝试使用 php artisan cache:clear
清除应用程序缓存,但仍然出现错误。
是否需要清除特定缓存以删除对原始迁移文件的引用?
这不是缓存问题。您只需要再次运行作曲:
composer dump-autoload
回滚迁移并检查
migrate:rollback
我在我的应用程序中对表格进行了几次迁移。这些表格是:
- 人
- 技能
- 媒体
- 备注
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
创建迁移时,我不小心在 people
迁移之前创建了 skills
迁移文件。
这导致了一个问题,因为当您 运行 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 仍在以某种方式寻找旧人文件:
我尝试使用 php artisan cache:clear
清除应用程序缓存,但仍然出现错误。
是否需要清除特定缓存以删除对原始迁移文件的引用?
这不是缓存问题。您只需要再次运行作曲:
composer dump-autoload
回滚迁移并检查
migrate:rollback