242

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

创建迁移命令:

php artisan migrate:make create_users_table

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

迁移文件:

2013_05_31_220658_create_users_table
4

9 回答 9

446

我不小心创建了一个名称不好的迁移(命令:)php artisan migrate:make。我没有运行( php artisan migrate) 迁移,所以我决定删除它。我的步骤:

  1. 手动删除下的迁移文件app/database/migrations/my_migration_file_name.php
  2. 重置作曲家自动加载文件:composer dump-autoload
  3. 放松

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

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

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

  1. 手动删除下的迁移文件app/database/migrations/my_migration_file_name.php
  2. 重置作曲家自动加载文件:composer dump-autoload
  3. 修改数据库:从迁移表中删除最后一个条目
于 2013-07-24T09:36:15.443 回答
65

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

于 2013-06-01T10:19:49.737 回答
17

不要运行 php artisan migrate:fresh这会删除所有表格

于 2020-08-03T15:53:13.860 回答
12

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

于 2013-06-01T10:01:23.910 回答
12
 php artisan migrate:fresh

如果您正在开发中并且期望的结果是重新开始,则应该完成这项工作。

生产中,这可能不是我们想要的东西,所以你应该被告知。(migrate:fresh 命令将从数据库中删除所有表,然后执行 migrate 命令)。

于 2018-09-02T16:39:46.950 回答
9

我不小心创建了两次 create_users_table。它覆盖了一些类并将回滚变成了 ErrorException。

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

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

并编辑路径。那么你的回滚应该没问题。

于 2013-07-04T02:42:57.420 回答
6

我同意当前的答案,我只想添加更多信息。

Laravel 5.3 及更高版本添加了一个新功能,允许您退出单个迁移:

php artisan migrate:rollback --step=1

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

当您运行迁移时,这是一个很棒的功能

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

于 2018-05-02T06:22:07.823 回答
3

我宁愿手动做

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

对我有用,希望对你有帮助!

于 2020-03-23T09:50:43.307 回答
-3

这对我有用:

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

在 laravel 5.5.43

于 2019-02-10T02:43:47.510 回答