【问题标题】:Remove specific migration in laravel删除 laravel 中的特定迁移
【发布时间】:2017-11-17 10:02:57
【问题描述】:

根据 laravel 文档,要回滚最新的迁移操作,您可以使用 rollback 命令。此命令回滚最后“批次”迁移,其中可能包含多个迁移文件:

php artisan migrate:rollback

您可以通过向 rollback 命令提供 step 选项来回滚有限数量的迁移。例如,以下命令将回滚最近五次迁移:

php artisan migrate:rollback --step=5

migrate:reset 命令将回滚应用程序的所有迁移:

php artisan migrate:reset

您可以查看here。但我需要删除特定的迁移文件。根据我的项目有 30-40 个迁移文件。我想删除其中一个迁移文件及其模型。有没有办法做到这一点或必须手动完成。

【问题讨论】:

  • @GovindSamrow 分享的内容正是您所寻找的。但在我看来,删除迁移绝不是一个好主意。或者,您应该编写另一个迁移,根据您的新要求更改您的数据库结构。我们必须记住迁移提供“版本控制数据库”。删除虽然可能,但与迁移的概念背道而驰。我们必须避免这种情况,尤其是在像您这样的大型项目中。

标签: laravel laravel-5 laravel-migrations


【解决方案1】:

删除迁移文件,从数据库中删除表,并从数据库中的migrations 表中删除该文件名。

有时,手动操作是最好的方法。

【讨论】:

    【解决方案2】:

    只需手动完成,就可以避免其他问题的压力

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

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

    【讨论】:

      【解决方案3】:

      不要。迁移是数据库的版本控制。 “删除”特定迁移就像从 Git 存储库的历史记录中删除随机提交:它可能会产生可怕的后果。

      相反,如果您不再需要某个表,则创建一个新的迁移,在 up 方法中删除该表,并在 down 方法中重新创建它,以便可以回滚迁移。

      【讨论】:

        【解决方案4】:

        如果您只是移除(删除)迁移文件并重新运行迁移 (migrate:refresh),将重建数据库表(不包含您删除的迁移文件中定义的表)。

        【讨论】:

        • 原来的问题没有说任何关于保存数据的内容。如果需要,则需要手动完成 mysqldump 和导入
        【解决方案5】:

        您可以增加该特定迁移的批次编号以使其成为最新批次并运行回滚命令。 Rollback one specific migration in Laravel

        【讨论】:

          猜你喜欢
          • 2016-09-11
          • 2017-02-23
          • 2017-07-30
          • 2021-02-28
          • 2018-01-30
          • 2014-02-03
          • 2018-01-10
          • 2019-01-22
          • 2017-10-19
          相关资源
          最近更新 更多