Doctrine 2和postgresql,数据库模式不同步

时间:2014-02-25 14:21:37

标签: postgresql symfony doctrine-orm

我在Symfony2 proyect中使用postgresql,在Mac中配置Postgis(不确定最后一个是否有任何区别)。

问题是在运行

后验证我的架构
doctrine:schema:update --force

将导致此错误:

  

[Mapping] OK - 映射文件正确。

     

[数据库]失败 - 数据库架构与当前映射文件不同步。

再次更新时,Doctrine会尝试再次添加所有内容,当然不会。

感谢您的帮助。

修改 app / console --ansi doctrine:schema:update --dump-sql

的结果

ALTER T

ABLE actions ADD id VARCHAR(255) NOT NULL;
ALTER TABLE actions ADD display VARCHAR(255) NOT NULL;
ALTER TABLE actions ADD description VARCHAR(255) DEFAULT NULL;
ALTER TABLE actions ADD PRIMARY KEY (id);

-- lots more tables.. 

ALTER TABLE subclassifications ADD PRIMARY KEY (id);
ALTER TABLE users ADD id INT NOT NULL;
ALTER TABLE users ADD company_id INT DEFAULT NULL;
ALTER TABLE users ADD profile_id INT DEFAULT NULL;
ALTER TABLE users ADD name VARCHAR(255) NOT NULL;
ALTER TABLE users ADD password VARCHAR(255) NOT NULL;
ALTER TABLE users ADD salt VARCHAR(255) NOT NULL;
ALTER TABLE users ADD email VARCHAR(255) NOT NULL;
ALTER TABLE users ADD state INT NOT NULL;
ALTER TABLE users ADD accessCode INT NOT NULL;
ALTER TABLE users ADD CONSTRAINT FK_1483A5E9979B1AD6 FOREIGN KEY (company_id) REFERENCES companies (id) ON DELETE CASCADE NOT DEFERRABLE INITIALLY IMMEDIATE;
ALTER TABLE users ADD CONSTRAINT FK_1483A5E9CCFA12B8 FOREIGN KEY (profile_id) REFERENCES profiles (id) ON DELETE SET NULL NOT DEFERRABLE INITIALLY IMMEDIATE;
CREATE INDEX IDX_1483A5E9979B1AD6 ON users (company_id);
CREATE INDEX IDX_1483A5E9CCFA12B8 ON users (profile_id);
ALTER TABLE users ADD PRIMARY KEY (id);

这里的要点是第一次使用相同的转储,但在进行任何更改时,转储应该只是增量更改,而不是完整的数据库。

1 个答案:

答案 0 :(得分:1)

这里可能有一些问题。

第一个:你使用的是哪个版本的Doctrine?直到2.3我有同样的事情。更新到2.4修复它。

第二个问题:您的地图中是否有columnDefinition?如果你拥有它,那就是问题所在。 columnDefinition打破了可移植性。它还打破了Doctrine Migrations。