【问题标题】:Laravel migrations do not reflect the current database schemaLaravel 迁移不反映当前的数据库模式
【发布时间】:2019-11-21 12:44:45
【问题描述】:

我正在使用 Laravel / MySQL 中的一个应用程序,该应用程序没有通过迁移定义其所有表,因为有一次他们停止使用迁移并通过接触数据库直接进行更改。这使得如果我运行 php artisan migrate 不要采用当前的数据库模式。我的问题是,我有什么方法可以重用数据库当前结构的迁移?如果有任何程序可以更新我的迁移,包括直接添加到数据库表中的那些字段。

【问题讨论】:

  • 在 Laravel 中没有什么可以自动检测到的。您可能必须遍历数据库,比较和调整初始迁移以匹配数据库的当前状态。在某些情况下,更新数据库比运行新迁移更容易(例如更新enum 列中的值),因此可能会发生这种情况。但由执行此操作的人来调整迁移(即使它们没有立即运行/重新运行)。

标签: php database laravel eloquent migration


【解决方案1】:

快速搜索将我带到一个包,cethron/migrations-generator(最后更新于 2017 年 9 月 19 日)。它从现有数据库生成迁移。 Here 是另一篇关于一些工具的文章。

但是,您仍然可以进行新的迁移。这些迁移将创建新表或更改列。

您应该手动追踪差异和modify the columns

Schema::table('users', function (Blueprint $table) {
    $table->string('name', 50)->change();
});

【讨论】:

    猜你喜欢
    • 2016-10-19
    • 1970-01-01
    • 2018-04-04
    • 1970-01-01
    • 2020-01-10
    • 2019-07-12
    • 1970-01-01
    • 1970-01-01
    • 2015-06-22
    相关资源
    最近更新 更多