学说映射确定但不是数据库验证

时间:2014-05-20 15:01:37

标签: php mysql symfony doctrine-orm

更新我的symfony 2项目的数据库时,遇到一个奇怪的问题。

$ php app/console doctrine:schema:validate
[Mapping]  OK - The mapping files are correct.
[Database] FAIL - The database schema is not in sync with the current mapping file.

尽管运行了这个

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

它始终表示已成功执行某些查询,但schema:validate返回未同步数据库架构。有什么可以做到这一点?

symfony 2.4.2 mysql Ver 14.14 Distrib 5.5.37,debian-linux-gnu(x86_64)使用readline 6.2

修改 这里是学说的转储:schema:update

ALTER TABLE melu_numeros ADD CONSTRAINT FK_8062E62AFB539063 FOREIGN KEY (id_fan) REFERENCES melu_fanzine (id_fan);
ALTER TABLE melu_numeros ADD CONSTRAINT FK_8062E62AABEDD0E7 FOREIGN KEY (id_num_fan) REFERENCES melu_formats (id_format);
ALTER TABLE melu_numeros ADD CONSTRAINT FK_8062E62AC06A9F55 FOREIGN KEY (img_id) REFERENCES Image (id);
ALTER TABLE melu_categories ADD CONSTRAINT FK_7B0247F1ABEDD0E7 FOREIGN KEY (id_num_fan) REFERENCES melu_numeros (id_num_fan);
ALTER TABLE melu_fichiers ADD CONSTRAINT FK_E2A048FCD6E65D60 FOREIGN KEY (id_agen) REFERENCES melu_agenda (id_agen);
ALTER TABLE melu_fanzine ADD CONSTRAINT FK_99AC1D58A656D38D FOREIGN KEY (id_asso) REFERENCES melu_association (id_asso);
ALTER TABLE melu_tarifs ADD CONSTRAINT FK_409B4C8D6E65D60 FOREIGN KEY (id_agen) REFERENCES melu_agenda (id_agen);
ALTER TABLE melu_newsletter CHANGE email email VARCHAR(50) NOT NULL;
ALTER TABLE melu_commentaire ADD CONSTRAINT FK_EE62B25DABEDD0E7 FOREIGN KEY (id_num_fan) REFERENCES melu_numeros (id_num_fan);
ALTER TABLE melu_contenus ADD CONSTRAINT FK_D9DCDC616C6AE4E2 FOREIGN KEY (id_cont) REFERENCES melu_types (id_types);
ALTER TABLE melu_types ADD CONSTRAINT FK_8AB9AD2AB7B5C800 FOREIGN KEY (id_types) REFERENCES melu_contenus (id_cont);
ALTER TABLE melu_photos ADD CONSTRAINT FK_F5C79087D6E65D60 FOREIGN KEY (id_agen) REFERENCES melu_agenda (id_agen);
ALTER TABLE melu_jour ADD CONSTRAINT FK_85C738A2D6E65D60 FOREIGN KEY (id_agen) REFERENCES melu_agenda (id_agen);
ALTER TABLE melu_util_droit ADD CONSTRAINT FK_6C66C28550EAE44 FOREIGN KEY (id_utilisateur) REFERENCES melu_utilisateurs (id_util);

2 个答案:

答案 0 :(得分:0)

您的数据库中可能有一个未在您的实体中声明的字段。 你可以尝试逆向工程。

$ php app/console doctrine:mapping:convert xml ./src/Acme/BlogBundle/Resources/config/doctrine/metadata/orm --from-database --force
$ php app/console doctrine:mapping:import AcmeBlogBundle annotation

要小心,因为它会覆盖您的实际实体。 逆向工程是一个一次性开始项目的过程,因此通常不应该在项目中间完成。

希望这会对你有帮助!

答案 1 :(得分:0)

这里,由于表格在myisam引擎中,因此学说无法正确处理外键。 我在innoDb中全部转换,一切正常! 谢谢!