在 laravel5 中回滚特定迁移

Rollback a specific migration in laravel5

我需要回滚特定的 table,因为我忘了提及外键。 而且我不想丢失所有 table 的数据。

我的框架是Laravel 5.4

提前谢谢大家

遗憾的是,没有一个选项可以根据 table 回滚迁移。您只能使用 step 参数回滚最近的迁移或最后几次迁移。

但是如果您确实需要,可以使用一种简单的方法。对于要回滚的迁移,您可以将迁移 table 中的 batch 值设置为比最近的迁移更大的值。有了这个,当您调用 php artisan migrate:rollback 时,只有 batch 值被更改的特定迁移文件才会回滚。

迁移应按特定顺序应用和回滚。因此,没有 "proper" 重新应用任意迁移的方法。

无论如何至少有两个选择:

  1. "Fail forward" - 创建后续迁移,创建必要的 FK 并应用它。如果您已经在生产中,这是唯一正确的方法。

  2. 如果您只是处于开发的早期阶段并且不会膨胀 migrations 目录,您可以

    • 转储表以便保留数据
    • 回滚到此特定迁移
    • 修复并测试迁移
    • 迁移
    • 从转储中加载数据

我是这样做的:

  1. 正在手动删除 table;
  2. 转到 "migrations" table 并删除与您的迁移对应的行;
  3. php artisan migrate;
  4. 完成

例如,如果您修改了名为 "Settings" 的迁移,则从数据库和迁移 table 中删除此 table,然后重新运行 artisan 命令。

你可以做到

php artisan migrate:rollback --path=/database/migrations/your_file.php