【问题标题】:Start over with Laravel's migrations从 Laravel 的迁移重新开始
【发布时间】:2018-05-24 03:40:21
【问题描述】:

我正在从事一个更大的 Laravel 项目一段时间,目前有超过 70 次迁移(使用 MySQL)。我从来没有写过测试(我感到羞耻),现在想赶上它。
我一开始就使用了外键。我重命名了一些,然后在随后的迁移中完全删除了它们。

现在应该使用一个临时的 sqlite 数据库进行测试。但是由于我按名称重命名 fk 并且 MySQL 的命名约定与 sqlite 的不同,因此 sqlite 找不到这些。还有一堆其他错误。

我想知道是否可以删除所有迁移并创建一个包含当前状态的所有数据库结构的迁移。从头开始,可以这么说。

这是可取的吗? migrations 表应该发生什么?

【问题讨论】:

    标签: database laravel testing


    【解决方案1】:

    在开发过程中,您通常只是不断添加迁移以获得所需的结构。如果你在某个时候喜欢这个结构,你绝对可以压缩你的迁移。

    通常情况下,当有人在本地开发时,他们可能会这样做,当他们到达可能想要开始部署应用程序的位置时,他们会压缩迁移,因为您知道您需要和不需要的结构“倒退”,因为这是您需要的模式。您只需要担心未来的变化。

    在您尚未运行这些迁移的任何系统上,您都可以完全正常,因为它只会在第一次运行,并且您将准备好完整的架构。如果您已经有迁移表并且不想回滚,那么您就处于困境中......您将不得不手动更改迁移表以删除基本上不再存在的所有迁移并更改剩余的迁移( s) 以匹配合并后的内容。 (如果您希望能够回滚/刷新......但实际上您不会在某个点之后回滚或刷新,只会向前移动[通常是因为不想丢失数据])

    在压缩迁移时没有什么可担心的......它们是您的架构,如果您知道所需的架构,则无需逐步完成 20 种不同的迁移,这些迁移可能会大量更改相同的表获得最终结果的时间。

    【讨论】:

    • 我已经编写了一个全新的迁移,并确保它可以提供与我之前所有迁移完全相同的数据库结构。然后,我手动编辑了 migrations 表。谢谢!
    猜你喜欢
    • 2013-07-17
    • 1970-01-01
    • 1970-01-01
    • 2018-08-01
    • 2021-02-28
    • 1970-01-01
    • 2020-02-14
    • 1970-01-01
    • 2019-05-04
    相关资源
    最近更新 更多