我需要清除哪些 Laravel 缓存以删除有关丢失迁移文件的错误?
Posted
技术标签:
【中文标题】我需要清除哪些 Laravel 缓存以删除有关丢失迁移文件的错误?【英文标题】:What Laravel cache do I need to clear to remove error about missing migration file? 【发布时间】:2016-06-18 13:30:22 【问题描述】:我在我的应用程序中对表进行了几次迁移。这些表格是:
人 技能 媒体 注释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
我的桌子时,我都会收到一条错误消息,指出工匠仍在以某种方式寻找老人文件:
我尝试使用php artisan cache:clear
清除应用程序缓存,但仍然收到错误消息。
是否需要清除特定缓存才能删除对原始迁移文件的引用?
【问题讨论】:
【参考方案1】:这不是缓存问题。你只需要再次运行 composer:
composer dump-autoload
【讨论】:
facepalm 我忘了迁移是作曲家类图的一部分。谢谢您的帮助。一旦我可以,我会给你一张支票。你回答得太快了,时间限制还没到:P 我遇到了同样的问题,这对我有很大帮助,谢谢! 这对我不起作用;php artisan migrate
仍在发出有关另一个代码分支上存在迁移的警告。【参考方案2】:
回滚您的迁移并检查
migrate:rollback
【讨论】:
以上是关于我需要清除哪些 Laravel 缓存以删除有关丢失迁移文件的错误?的主要内容,如果未能解决你的问题,请参考以下文章