在 laravel5 中回滚特定迁移
Rollback a specific migration in laravel5
我需要回滚特定的 table,因为我忘了提及外键。
而且我不想丢失所有 table 的数据。
我的框架是Laravel 5.4
提前谢谢大家
遗憾的是,没有一个选项可以根据 table 回滚迁移。您只能使用 step
参数回滚最近的迁移或最后几次迁移。
但是如果您确实需要,可以使用一种简单的方法。对于要回滚的迁移,您可以将迁移 table 中的 batch
值设置为比最近的迁移更大的值。有了这个,当您调用 php artisan migrate:rollback
时,只有 batch
值被更改的特定迁移文件才会回滚。
迁移应按特定顺序应用和回滚。因此,没有 "proper" 重新应用任意迁移的方法。
无论如何至少有两个选择:
"Fail forward" - 创建后续迁移,创建必要的 FK 并应用它。如果您已经在生产中,这是唯一正确的方法。
如果您只是处于开发的早期阶段并且不会膨胀 migrations 目录,您可以
- 转储表以便保留数据
- 回滚到此特定迁移
- 修复并测试迁移
- 迁移
- 从转储中加载数据
我是这样做的:
- 正在手动删除 table;
- 转到 "migrations" table 并删除与您的迁移对应的行;
php artisan migrate
;
- 完成
例如,如果您修改了名为 "Settings" 的迁移,则从数据库和迁移 table 中删除此 table,然后重新运行 artisan 命令。
你可以做到
php artisan migrate:rollback --path=/database/migrations/your_file.php
我需要回滚特定的 table,因为我忘了提及外键。 而且我不想丢失所有 table 的数据。
我的框架是Laravel 5.4
提前谢谢大家
遗憾的是,没有一个选项可以根据 table 回滚迁移。您只能使用 step
参数回滚最近的迁移或最后几次迁移。
但是如果您确实需要,可以使用一种简单的方法。对于要回滚的迁移,您可以将迁移 table 中的 batch
值设置为比最近的迁移更大的值。有了这个,当您调用 php artisan migrate:rollback
时,只有 batch
值被更改的特定迁移文件才会回滚。
迁移应按特定顺序应用和回滚。因此,没有 "proper" 重新应用任意迁移的方法。
无论如何至少有两个选择:
"Fail forward" - 创建后续迁移,创建必要的 FK 并应用它。如果您已经在生产中,这是唯一正确的方法。
如果您只是处于开发的早期阶段并且不会膨胀 migrations 目录,您可以
- 转储表以便保留数据
- 回滚到此特定迁移
- 修复并测试迁移
- 迁移
- 从转储中加载数据
我是这样做的:
- 正在手动删除 table;
- 转到 "migrations" table 并删除与您的迁移对应的行;
php artisan migrate
;- 完成
例如,如果您修改了名为 "Settings" 的迁移,则从数据库和迁移 table 中删除此 table,然后重新运行 artisan 命令。
你可以做到
php artisan migrate:rollback --path=/database/migrations/your_file.php