我想要的

仅回退:

回滚:2015_05_15_195423_alter_table_web_directories


我跑

PHP artisan migrate:rollback,我的3个迁移都在回滚。

Rolled back: 2015_05_15_195423_alter_table_web_directories
Rolled back: 2015_05_13_135240_create_web_directories_table
Rolled back: 2015_05_13_134411_create_contacts_table

我删除

我的web_directory和我的联系人表都是无意的。我不希望发生这种情况,如果我只能回滚特定的一个,这种灾难就永远不会发生。


当前回答

如果您可以访问数据库,则有一个更简单的解决方案。您可以从迁移表中删除记录,然后删除表。SQL客户端。

或者可以使用

php artisan migrate:rollback --path=... 

就像很多答案一样。记住路径是Location。您甚至可以像这样删除模块迁移。(从任何地方迁移)

php artisan migrate:rollback --path=Modules/YourModule/database/migrations/2020_05_15_xxxxxx_create_your_table.php

记住,如果你使用的是linux服务器,小心区分大小写。你必须在开头加上/Database/Migrations。

/Database/Migrations/2020_05_15_xxxxxx_create_your_table.php

其他回答

拉拉维尔 5.3+

回退一步。本机。

php artisan migrate:rollback --step=1

这是手册页:文档。


Laravel 5.2及之前版本

不麻烦就没办法。详情请看Martin Bean的回答。

只回滚特定的迁移非常容易。 由于命令php artisan migrate:rollback,撤销上次数据库迁移, 迁移执行的顺序存储在迁移表中的批处理字段中。

您可以编辑要回滚的迁移的批处理值,并将其设置为较高的值。 然后你可以用一个简单的回滚迁移:

php artisan migrate:rollback

在编辑相同的迁移之后,可以使用简单的

php artisan migrate

注意:如果两个或多个迁移具有相同的更高值,它们将同时回滚。

INSERT INTO homestead.bb_migrations (`migration`, `batch`)  VALUES ('2016_01_21_064436_create_victory_point_balance_table', '2')

就像这样

使用命令"php artisan migrate:rollback——step=1"将迁移回退一步。

欲了解更多信息,请查看链接:https://laravel.com/docs/master/migrations#running-migrations

1)。在数据库中,转到迁移表并删除与要删除的表相关的迁移条目。

迁移表映像示例

2)。接下来,删除与刚才从指令1中删除的迁移相关的表。

删除表映像示例

3)。最后,对从指令no中删除的表的迁移文件进行您想要的更改。2然后运行PHP artisan migrate重新迁移表。