在laravel5中回滚特定的迁移

时间:2017-05-21 17:39:11

标签: laravel laravel-5 migration rollback

我忘记提及外键时需要回滚一个特定的表。 我不希望所有表中的数据丢失。

我的框架是Laravel 5.4

先谢谢所有人

4 个答案:

答案 0 :(得分:3)

迁移旨在按特定顺序应用和回滚。因此,没有“适当”的方式重新应用任意迁移。

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

  1. “失败转发” - 创建后续迁移,创建必要的FK并应用它。如果您已经投入生产,这是唯一正确的方法。

  2. 如果您刚刚处于开发的早期阶段,并且不希望膨胀迁移目录,那么

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

答案 1 :(得分:2)

我这样做:

  1. 手动删除表格;
  2. 转到“迁移”表并删除要迁移的相应行;
  3. php artisan migrate;
  4. 完成

例如,如果您修改了名为“设置”的迁移,则需要从数据库和迁移表中删除该表,然后重新运行artisan命令。

答案 2 :(得分:1)

不幸的是,没有一个选项来回滚每个表的迁移。您只能使用step参数回滚最新迁移或最后几次迁移。

但是,如果你真的需要,有一种hacky方式可以做到这一点。您可以将迁移表中的batch值设置为比最近迁移更高的数量,仅用于要回滚的迁移。当您调用php artisan migrate:rollback时,只有具有batch值的特定迁移文件才会回滚。

答案 3 :(得分:1)

你可以

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