回滚 laravel5 中的特定迁移
Posted
技术标签:
【中文标题】回滚 laravel5 中的特定迁移【英文标题】:Rollback a specific migration in laravel5 【发布时间】:2017-10-21 08:17:01 【问题描述】:我需要回滚一个特定的表,因为我忘了提到外键。 而且我不希望所有表中的数据丢失。
我的框架是 Laravel 5.4
提前谢谢大家
【问题讨论】:
【参考方案1】:你可以的
php artisan migrate:rollback --path=/database/migrations/your_file.php
【讨论】:
【参考方案2】:我是这样做的:
-
手动删除表;
转到“迁移”表并删除迁移的相应行;
php artisan migrate
;
完成
例如,如果您修改了名为“设置”的迁移,则从 DB 和迁移表中删除此表,然后重新运行 artisan 命令。
【讨论】:
【参考方案3】:迁移旨在按特定顺序应用和回滚。因此,没有“正确”的方式重新应用任意迁移。
无论如何,至少有两种选择:
“失败转发”- 创建后续迁移,创建必要的 FK 并应用它。如果您已经投入生产,这是唯一正确的方法。
如果您只是处于开发的早期阶段并且不想让迁移目录膨胀,您可以
转储表格以便保留数据 回滚到此特定迁移 修复和测试迁移 迁移 从转储中加载数据【讨论】:
+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
来验证更改批处理值后会受到影响的迁移以上是关于回滚 laravel5 中的特定迁移的主要内容,如果未能解决你的问题,请参考以下文章