我需要清除哪些 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 缓存以删除有关丢失迁移文件的错误?的主要内容,如果未能解决你的问题,请参考以下文章

即使清除缓存 laravel 后视图也不刷新

如何使用命令行清除 laravel 中的缓存?

Laravel 8 无法清除缓存。确保您具有适当的权限

有没有办法以编程方式清除所有缓存文件?

Laravel 5.4 - php artisan cache:使用'file'缓存驱动程序时clear不清除缓存文件

如何清除tomcat缓存