我想要的

仅回退:

回滚: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和我的联系人表都是无意的。我不希望发生这种情况,如果我只能回滚特定的一个,这种灾难就永远不会发生。


当前回答

除此之外

php artisan migrate:rollback --step=1

我将添加一个检查表迁移:

select * from migrations;

这将显示一个有序的列表,其中包含artisan命令回滚的迁移。

其他回答

如果只回滚一个表,你应该使用路径选项,并在命令行中添加迁移表路径和步骤一选项:

php artisan migrate:rollback --step=1 --path=database/migrations/2022_12_12_050004__alter_table_web_directories.php

回退一步。本机。

php artisan migrate:rollback --step=1

回滚两步。本机。

php artisan migrate:rollback --step=2

最好的方法是创建一个新的迁移,并在其中进行所需的更改。

最坏的情况下的解决方案(如果你有DB的访问权限,加上你可以对该表的数据进行重置):

转到DB,为特定的迁移删除/重命名迁移条目 删除由您的特定迁移创建的表 运行php artisan migrate——path=/database/migrations/your-specific-migration.php

这将迫使laravel运行特定的迁移,因为在laravel的迁移历史中不存在关于它的条目

更新:Laravel方式(谢谢,@thiago-valente)

运行:

PHP工匠迁移:rollback——path=/database/migrations/your-specific-migration.php

然后:

PHP工匠迁移

这将重新运行特定的迁移

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

就像这样

逐个迁移表。

将需要回退的迁移批号修改为最高。

运行迁移:回滚。

这可能不是处理大型项目的最佳方式。