在Laravel安全地移除迁移

在Laravel中,似乎有一个创建迁移的命令,但没有删除的命令。

创建迁移命令:

php artisan migrate:make create_users_table

如果我想删除迁移,我是否可以安全地删除database/migrations文件夹中相应的迁移文件?

迁移文件:

2013_05_31_220658_create_users_table
229851 次浏览

您可能还需要从迁移表中删除该条目。

如果迁移已经运行(读取:已迁移),那么您应该回滚迁移以清除数据库表中的历史记录。回滚后,您应该能够安全地删除迁移文件,然后再次进行迁移。

我不小心创建了两次create_users_table。它重写了一些类,并将回滚转换为errorrexception。

您需要做的是在vendor/composer文件夹中找到autoload_classmap.php,并查找特定的代码行,例如

'CreateUsersTable' => $baseDir . '/app/database/migrations/2013_07_04_014051_create_users_table.php',

然后编辑path。那么回滚应该没问题。

我不小心创建了一个有坏名字的迁移(命令:php artisan migrate:make)。我没有跑 (php artisan migrate)迁移,所以我决定删除它。 我的步骤:< / p >
  1. 手动删除app/database/migrations/my_migration_file_name.php下的迁移文件
  2. 重置编写器自动加载文件:composer dump-autoload
  3. 放松

如果你运行了迁移(php artisan migrate),你可以这样做:

一)运行migrate:rollback -这是撤销上次迁移的正确方法(Thnx @Jakobud)

b)如果migrate:rollback不起作用,手动执行(我记得在以前的版本中migrate:rollback有bug):

  1. 手动删除app/database/migrations/my_migration_file_name.php下的迁移文件
  2. 重置编写器自动加载文件:composer dump-autoload
  3. 修改数据库:从迁移表中删除最后一个条目

我同意目前的答案,我只是想补充一点信息。

Laravel 5.3及以上版本添加了一个新特性,允许你退出一次迁移:

php artisan migrate:rollback --step=1

之后,手动删除database/migrations/my_migration_file_name.php下的迁移文件

当您运行迁移时,这是一个很好的特性

这样,只需2步就可以安全地去除laravel中的迁移

不要在生产环境中运行这个程序,但是如果你是在开发过程中,并且你想要的结果是重新开始,那么这个程序应该可以完成工作:

# php artisan migrate:fresh

生产中,那可能是所期望的东西,所以你应该被注意到。(migrate:fresh命令将从数据库中删除所有表,然后执行migrate命令)。

这对我来说很管用:

  1. 我删除了数据库中的所有表,主要是migrations表。
  2. php artisan migrate:refresh

在laravel 5.5.43

我宁愿手工做

  1. 首先删除模型(如果您不再需要)
  2. 删除从...database/migrations文件夹迁移
  3. 如果你已经迁移了,例如你已经运行了php artisan migrate,登录到你的phpmyadmin或SQL(无论哪种情况),在你的数据库中,删除由迁移创建的表
  4. 仍然在数据库中,在migrations文件夹中,找到具有该迁移文件名的行并删除该行。

对我有用,希望有帮助!

运行php artisan migrate:fresh,这将删除所有的表