我想要的

仅回退:

回滚: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

其他回答

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

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

php artisan migrate:rollback

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

php artisan migrate

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

回退一步。本机。

php artisan migrate:rollback --step=1

回滚两步。本机。

php artisan migrate:rollback --step=2

现在回答这个问题可能有点晚了,但我觉得这里有一个非常好的、干净和有效的方法。我会尽量详细的。

在创建迁移之前,创建不同的目录,如下所示:

    database
       | 
       migrations
            |
            batch_1
            batch_2
            batch_3

然后,在创建迁移时运行以下命令(以表为例):

     php artisan make:migration alter_table_web_directories --path=database/migrations/batch_1

or

     php artisan make:migration alter_table_web_directories --path=database/migrations/batch_2

or

     php artisan make:migration alter_table_web_directories --path=database/migrations/batch_3

上面的命令将迁移文件置于给定的目录路径中。然后,您可以简单地运行以下命令通过指定的目录迁移文件。

    php artisan migrate alter_table_web_directories --path=database/migrations/batch_1

*注意:您可以将batch_1更改为batch_2或batch_3或任何您存储迁移文件的文件夹名称。只要它仍然在database/migrations目录或某个指定的目录中。

接下来,如果你需要回滚特定的迁移,你可以批量回滚,如下所示:

    php artisan migrate:rollback --step=1
                    or try
php artisan migrate:rollback alter_table_web_directories --path=database/migrations/batch_1

or

    php artisan migrate:rollback --step=2
                    or try
php artisan migrate:rollback alter_table_web_directories --path=database/migrations/batch_2

    php artisan migrate:rollback --step=3
                    or try
php artisan migrate:rollback alter_table_web_directories --path=database/migrations/batch_3

使用这些技术将使您能够更灵活地控制数据库以及对模式的任何修改。

如果要回滚上次迁移。

php artisan migrate:rollback

如果要回滚特定的迁移,则转到迁移表并批量设置该记录的最大值。 然后。

php artisan migrate:rollback

目前我正在laravel 5.8工作,如果没有任何其他版本的laravel请通知我。

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

最坏的情况下的解决方案(如果你有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工匠迁移

这将重新运行特定的迁移