Symfony2:数据库模式和实体不会使用更改的元数据进行更新


Symfony2: Database schema and entities not updating with changed metadata

我在更新Symfony2中的模式时遇到问题。

我已经使用原则将一个数据库导入到Symfony2中,并在YML中创建所有ORM文件。

我已经从这个元数据创建了所有实体,效果很好,但是如果我想使用 orm.yml 文件更改数据库架构,它不会更新我的数据库,甚至在我重新生成实体时也不会更新实体。

导入在 中创建 orm.yml 文件/src/{name}/{my}bundle/Resources/config/doctrine/metadata/orm/{table}.orm.yml

它的创建没有错误。

当我这样做时:

php app/console doctrine:schema:update --dump-sql

它显示:

ALTER TABLE accounttypes CHANGE description description VARCHAR(45) NOT NULL

所以我:

php app/console doctrine:schema:update --force

和:

Updating database schema...
Database schema updated successfully! "1" queries were executed

我可以一遍又一遍地这样做,出现相同的查询,我执行它,它告诉我它已经完成,但它再次表明它需要再次完成。

然后,我转到了orm.yml文件并对其进行了彻底的更改,但是除了执行此操作时始终存在的查询之外,没有出现任何新查询。

文件AccountTypes.orm.yml

Accounttypes:
  type: entity
  table: accounttypes
  fields:
    description:
      id: true
      type: string
      length: 45
      fixed: false
      nullable: false
      generator:
        strategy: IDENTITY
  lifecycleCallbacks: {  }

更改为此内容:

Accounttypes:
  type: entity
  table: accounttypes
  id:
    id:
      type: integer
      generator: { strategy: AUTO }
  fields:
    description:
      id: true
      type: string
      length: 50
  lifecycleCallbacks: {  }

它仍然告诉我我需要:

ALTER TABLE accounttypes CHANGE description description VARCHAR(45) NOT NULL

我也尝试使用DoctrineMigrationsBundle,同样的查询显示需要完成。我迁移;它说查询已完成,当我再次使用它时,会出现相同的查询。

有人知道这是怎么发生的吗?我被困在这一点上,所以任何帮助都非常感谢。

按照上面的@Tomasz,确保你的Symfony2不会尝试使用注释而不是yaml来设置数据库。

我遇到了同样的问题。

原因是 - 新创建的捆绑包尚未添加到app'config.yml.

因此,此新捆绑包中的所有实体从未导出php app/console doctrine:schema:update --dump-sql