symfony 1.4:doctrine:build-sql问题

时间:2012-07-03 14:53:22

标签: php symfony1 doctrine symfony-1.4

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

现在,当我运行doctrine:build --alldoctrine: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;

1 个答案:

答案 0 :(得分: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