php - Symfony2 : Database schema and entities not updating with changed metadata

标签 php symfony doctrine doctrine-orm yaml

我在更新 Symfony2 中的架构时遇到问题。

我已经使用 doctrine 将数据库导入到 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。

关于php - Symfony2 : Database schema and entities not updating with changed metadata,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10659087/

相关文章:

php - 让基于 symfony2 客户端的动态 CSS 以某种方式工作

php - Laravel Eloquent 将 3 个查询合二为一

symfony - 使用什么代替 Twig_Loader_String

sql - Doctrine ORM - 自连接,没有任何实际关系

symfony - Doctrine 中的 Dql 选择 vs sql 查询

php - mysql 的最佳实践?

php - 递归函数将数组返回为 NULL,而返回前的 var_dump 有效

Symfony2 - 添加新的请求类型代码

php - Symfony 3.4 中忽略了 symfony EventSubscriber

MySQL/doctrine查询检索所有大于日期的元素