【问题标题】:Rollback a specific migration in laravel5回滚 laravel5 中的特定迁移
【发布时间】:2017-10-21 08:17:01
【问题描述】:

我需要回滚一个特定的表,因为我忘了提到外键。 而且我不希望所有表中的数据丢失。

我的框架是 Laravel 5.4

提前谢谢大家

【问题讨论】:

    标签: laravel laravel-5 migration rollback


    【解决方案1】:

    你可以的

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

    【讨论】:

      【解决方案2】:

      我是这样做的:

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

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

      【讨论】:

        【解决方案3】:

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

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

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

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

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

        【讨论】:

        • +1 。是的,这是开发阶段,我正在做我的学期项目。我是 laravel 的新手,我得到了你的第 2 点,请你进一步解释第 1 点。
        • 只需创建一个新的迁移,添加缺少的 FK 并迁移您的数据库。
        【解决方案4】:

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

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

        【讨论】:

        • 如何通过 laravel 命令设置批号还是手动设置?如果设置了批号。我应该在 cmdprpmt/终端上运行什么命令提前谢谢
        • 您需要在db中手动设置批号,设置一个高于当前最高的数字。完成后,您可以运行正常的回滚命令来回滚这些迁移php artisan migrate:rollback。您还可以通过运行php artisan migrate:rollback --pretend 来验证更改批处理值后会受到影响的迁移
        猜你喜欢
        • 2014-06-21
        • 2017-03-18
        • 2016-08-19
        • 2011-04-08
        • 2017-02-24
        • 1970-01-01
        • 2018-01-05
        • 2017-10-25
        • 2013-07-15
        相关资源
        最近更新 更多