我想要的

仅回退:

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


当前回答

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

迁移表映像示例

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

删除表映像示例

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

其他回答

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

就像这样

如果你不能做到@Martin Bean告诉你的,那么你可以尝试另一个技巧。

创建一个新的迁移,在该文件上,在up()方法中插入你想要回滚的迁移的down()方法中的内容,在down()方法中插入up()方法中的内容。

例如,如果你最初的迁移是这样的

public function up()
{
    Schema::create('users', function(Blueprint $table)
    {
        $table->increments('id')->unsigned();
        $table->string('name');
    });
}
public function down()
{
    Schema::drop('users');
}

然后在新的迁移文件中这样做

public function up()
{
    Schema::drop('users');
}
public function down()
{
    Schema::create('users', function(Blueprint $table)
    {
        $table->increments('id')->unsigned();
        $table->string('name');
    });
}

然后运行migrate,它会删除这个表。 如果你想要回滚它。

如果您可以访问数据库,则有一个更简单的解决方案。您可以从迁移表中删除记录,然后删除表。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

你可以使用

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

这将删除特定的迁移。如果文件有外键依赖,我希望你使用drop方法。对于这些情况,请尝试创建一个新的迁移,并在需要时删除foreign。

拉拉维尔 5.3+

回退一步。本机。

php artisan migrate:rollback --step=1

这是手册页:文档。


Laravel 5.2及之前版本

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