0

我错误地在我的模式中定义了一个名为的列desc,它是一个保留关键字。我很快意识到我的错误并更改了我的架构,将我的架构列名修改为description.

现在,当我运行doctrine:build --all或者doctrine:build-sql它仍然根据我过去的错误生成 sql 时。

我验证了这一点,因为它仍在生成语句desc中的 sql 语句,该语句已被删除。我已经清除了我的缓存,删除了原始的 sql 文件,并清除了我的日志。

到底是如何doctrine:build-sql产生一个被完全删除和删除的错误?我该如何纠正这个问题?

显然,在我能修复它之前,它doctrine:build已经坏了。

编辑:

这是我的原始架构:

ReasonCode:
  columns:
    id:          { type: integer, primary: true, notnull: true, autoincrement: true, unique: true }
    desc: { type: string }

RejectionCode:
  columns:
    id:          { type: integer, primary: true, notnull: true, autoincrement: true, unique: true }
    desc: { type: string }

ConsiderationCode:
  columns:
    id:          { type: integer, primary: true, notnull: true, autoincrement: true, unique: true }
    desc: { type: string }   

这是我修改后的架构:

ReasonCode:
  columns:
    id:          { type: integer, primary: true, notnull: true, autoincrement: true, unique: true }
    name: { type: string }

RejectionCode:
  columns:
    id:          { type: integer, primary: true, notnull: true, autoincrement: true, unique: true }
    name: { type: string }

ConsiderationCode:
  columns:
    id:          { type: integer, primary: true, notnull: true, autoincrement: true, unique: true }
    name: { type: string }  

这是每次生成的生成的 sql 模式:

CREATE TABLE consideration_code (id BIGINT UNIQUE AUTO_INCREMENT, desc TEXT, name TEXT, PRIMARY KEY(id)) ENGINE = INNODB;
CREATE TABLE reason_code (id BIGINT UNIQUE AUTO_INCREMENT, desc TEXT, name TEXT, PRIMARY KEY(id)) ENGINE = INNODB;
CREATE TABLE rejection_code (id BIGINT UNIQUE AUTO_INCREMENT, desc TEXT, name TEXT, PRIMARY KEY(id)) ENGINE = INNODB;
4

1 回答 1

1

doctrine:build-sql根据生成的模型(php 类)生成 SQL。您需要首先使用重新生成模型doctrine:build-model

你没有其他desc领域schema.yml吗?您是否尝试过清空文件夹cache?你能贴上你的schema.yml吗?

desc字段是否仍在您生成的模型(php 文件)中?

编辑:

另一种激进的解决方案:

  1. 清空你的schema.yml
  2. 运行doctrine:clean-model-files清理所有旧模型
  3. 把你的新schema.yml的(更正的)
  4. 重新运行doctrine:build --all
于 2012-07-03T15:02:38.203 回答