在Laravel中安全地删除迁移

时间:2013-06-01 09:53:10

标签: php database laravel artisan-migrate

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

创建迁移命令:

php artisan migrate:make create_users_table

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

迁移文件:

2013_05_31_220658_create_users_table

9 个答案:

答案 0 :(得分:319)

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

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

  5. 如果您确实运行了迁移( php artisan migrate ),则可以执行以下操作:

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

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

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

答案 1 :(得分:64)

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

答案 2 :(得分:12)

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

答案 3 :(得分:6)

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

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

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

并编辑路径。然后你的回滚应该没问题。

答案 4 :(得分:5)

 php artisan migrate:fresh

如果您正在开发中,并且期望的结果是从头开始,那么应该做好这项工作。

在生产中,这可能不是您想要的东西,因此您应该被广告吸引。 (migrate:fresh命令将从数据库中删除所有表,然后执行migration命令。)

答案 5 :(得分:1)

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

Laravel 5.3及以上版本 中添加了一项新功能,可让您退出单次迁移:

php artisan migrate:rollback --step=1

之后,手动删除database/migrations/my_migration_file_name.php

下的迁移文件

这是您运行迁移时的一项出色功能

通过这种方式,您可以仅在两步

中安全地删除laravel中的迁移

答案 6 :(得分:1)

这对我有用:

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

在laravel 5.5.43中

答案 7 :(得分:0)

我宁愿手动完成

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

为我工作,希望对您有所帮助!

答案 8 :(得分:0)

请勿运行php artisan migrate:fresh,它将删除所有表格