【问题标题】:What's the difference between generate-migrations-db and generate-migrations-modelsgenerate-migrations-db 和 generate-migrations-models 有什么区别
【发布时间】:2012-07-24 10:37:31
【问题描述】:

有什么区别

symfony doctrine:generate-migrations-db

symfony doctrine:generate-migrations-models

我没有发现任何区别:我尝试过使用数据库中的表,没有 schema.yml 和没有模型,它们都没有效果。没有生成迁移。

我尝试过使用数据库中的表、GENERATED schema.yml 和 NO 模型,它们都没有效果。没有生成迁移。

最后,我尝试使用数据库中的表、GENERATED schema.yml 和 GENERATED 模型,现在它们都生成相同的迁移类:|。

无法真正理解其中的区别。或者至少,考虑到所有场景,开始使用迁移的最佳方式是什么:有模型,但没有数据库,有数据库,但没有模型。

谢谢。

【问题讨论】:

    标签: database symfony1 doctrine migration symfony-1.4


    【解决方案1】:

    给定一个包含 1+ 个表的现有数据库,正在运行

    ./symfony doctrine:generate-migrations-db
    

    将导致为每个表创建迁移文件。同样,给定一个像/lib/model/doctrine 这样的目录,里面装满了预先存在的模型类,运行

    ./symfony doctrine:generate-migrations-models
    

    将为每个模型创建 migraiton 文件。

    如果数据库中有表,没有 schema.yml 内容,lib/model/doctrine 中没有模型,您只需要确保您的 database.yml 文件具有正确连接的凭据你的数据库。

    一旦您发现迁移文件没有生成的问题,我要做的就是开始迁移。

    1. 使用 ./symfony doctrine:build-schema 从现有数据库中生成新模式
    2. 手动清理架构文件,并重新建立模型文件中已经存在的关系(如果有的话)。
    3. 重新配置config/databases.yml 以指向一个新的空白数据库
    4. 使用./symfony doctrine:generate-migrations-diff 构建迁移。这将根据您的架构文件创建迁移,以使您的 (空白) 数据库保持最新
    5. 运行./symfony doctrine:migrate 并注意错误。通过修复您的架构文件来修复它们。删除在第 4 步中创建的迁移。刷新您的数据库 ./symfony doctrine:drop-db && ./symofny doctrine:build-db 并返回第 4 步。继续操作,直到您的架构生成一组干净的迁移文件,这些文件可以正常运行。
    6. 使用./symfony doctrine:build --model --forms --filters 重建您的模型

    现在您有了一个干净的 schema.yml 文件、可以更新空白数据库的干净迁移,以及与您的 schema.yml 文件和数据库直接相关的模型。

    当您想对数据库进行新的更改时,现在就这么简单

    1. 在您的schema.yml 中进行所需的更改
    2. 运行./symfony doctrine:generate-migrations-diff
    3. 手动查看生成的迁移
    4. 运行 ./symfony doctrine:migrate 以确保迁移正常运行
    5. 重建您的模型、表单和过滤器./symfony doctrine:build --model --forms --filters

    经历这个过程有时会令人沮丧,但你只需要做一次就可以创建一个非常好的基础。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-06-28
      • 2012-01-03
      • 1970-01-01
      相关资源
      最近更新 更多