【问题标题】:Doctrine Migrations Re. Fixtures教义迁移Re。夹具
【发布时间】:2011-05-19 21:16:14
【问题描述】:

我正在考虑在我的环境中部署 Doctrine 迁移以处理多个开发人员之间的数据库更改。我以前没用过,但我对这件事做了研究。

此时我唯一担心的是 [据我所知] Doctrine 迁移不允许对夹具进行修改。虽然我意识到迁移是为了更改原理图,但我认为夹具更改同样重要。

我希望引用表的固定装置是我的数据库(即 *_type、*_source 等),我觉得这些迁移也应该处理行添加/删除/更新,因为它们只是与任何结构变化一样重要。

如果有人能在这里指出正确的方向,将不胜感激。

更新

我探索了让 SVN 跟踪我的参考表装置的想法,但这将是一个无法部署的解决方案。由于外键约束,这些表将无法被截断/重新填充。

【问题讨论】:

    标签: php database symfony1 migration doctrine


    【解决方案1】:

    正如您所指出的,迁移是为了便于对数据库进行结构更改,而不是根据它们来操作您的夹具数据。

    根据我的经验,在开发应用程序时使用迁移不一定是最有帮助的方法,特别是如果开发人员 A 创建了新的迁移并且没有立即提交,而开发人员 B 也创建了一个新的迁移(在不知不觉中)与开发者A的迁移冲突,然后立即签入。开发人员 A 很快检查了他(或她)的迁移,并且您有两个相互冲突的迁移并且世界爆炸了。

    我想说更好的(尽管更冗长)方法是在 schema.yml 中更改架构,应用架构更改(通过私有迁移或手动),然后 doctrine:data-dump 并提交你的灯具数据。

    如果您确实选择在开发中进行迁移,也许您应该考虑使用 Doctrine Migration 类的 ->postUp()->preUp() 方法来就地转换您的数据。

    【讨论】:

    • 这似乎正是我想要的(参考doctrine-project.org/projects/orm/1.2/docs/manual/migrations/…)。谢谢你,贾敏先生。此外,虽然您的方法似乎是更好的方法,但我不确定将常规结构更改转移到生产中是否容易。
    • @MrJasmin,只要你不使用 sqlite.. Doctrine:data-dump 是在 sqlite 中进行迁移的唯一方法。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-30
    • 2015-12-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多