Laravel 5.5 中的迁移问题
Posted
技术标签:
【中文标题】Laravel 5.5 中的迁移问题【英文标题】:Problems with migrations in Laravel 5.5 【发布时间】:2018-04-26 16:50:56 【问题描述】:我的 Laravel 设置发生了一些非常奇怪的事情。我创建了一些迁移文件,并且在创建每个迁移文件后运行php artisan migrate
时,它们成功运行并且在数据库中创建了表。现在,如果我想运行php artisan migrate:refresh --seed
,它不能回滚其中一个迁移,因为它说迁移文件不存在。
这是错误:
这是我的迁移文件:
<?php
use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;
class CreateAssessmentsTable extends Migration
/**
* Run the migrations.
*
* @return void
*/
public function up()
Schema::create('assessments', function (Blueprint $table)
$table->increments('id');
//TODO - Complete information for this table
$table->timestamps();
);
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
Schema::dropIfExists('assessments');
更奇怪的是,我不得不重新创建所有迁移,因为它没有随机创建迁移中列出的某些表。
以前有人遇到过这个问题吗?非常感谢任何帮助。
[更新]
过了一会儿,我意识到这不是 Laravel 的东西。出于某种原因,尽管有这些文件,但我的 Homestead 并没有查看这些文件。如果我通过 SSH(vagrant box 中的那个)访问该文件夹,则该文件不存在。如果我去真正的文件夹,它就在那里。由于某种原因,该框无法正确同步文件。 更奇怪的是,我可以访问和编辑 VMB 中的文件,但它不会列出它,也不会在运行迁移时考虑在内。这里我创建了一个screen-recording showing the problem。
[更新 2]
刚刚又录制了 2 个视频。这真的很奇怪(除非我遗漏了什么)。
Video 1.
Video 2.
【问题讨论】:
由于迁移存储在表中,如果您在 git 中检查没有这些迁移的不同分支并尝试运行命令,我可以看到这种情况。这里有这种可能吗? 你能把你的种子文件的代码放上去吗? 不,一切都在同一个分支中运行@user3158900 @JamesRiady 我的播种机代码有什么帮助?它不会改变任何东西。找不到的是迁移文件。即使我不播种它也行不通。 你试过在你的 cmd(laravel 项目)中做composer dump-autoload
吗?
【参考方案1】:
这似乎是 MacOS High Sierra 和 Vagrant 的问题。为了修复它,我必须应用这个workaround。
希望这将为遇到与我相同问题的人节省一些时间。
【讨论】:
以上是关于Laravel 5.5 中的迁移问题的主要内容,如果未能解决你的问题,请参考以下文章
如何在 laravel 5.5 迁移中将 DB::unprepared() 用于 mysql 函数和存储过程
Laravel 5.5 Migration not found on migrate:refresh with --path 选项