sam*_*ull 5 postgresql symfony doctrine-orm doctrine-orm-postgres
更新模式时,doctrine始终会删除并添加约束.我想,这是错的......
php app/console doctrine:schema:update --force
Updating database schema...
Database schema updated successfully! "112" queries were executed
php app/console doctrine:schema:update --dump-sql
ALTER TABLE table.managers DROP CONSTRAINT FK_677E81B7A76ED395;
ALTER TABLE table.managers ADD CONSTRAINT FK_677E81B7A76ED395 FOREIGN KEY (user_id) REFERENCES table."user" (id) NOT DEFERRABLE INITIALLY IMMEDIATE;
...
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.
Run Code Online (Sandbox Code Playgroud)
怎么可以解决这个问题?
经过一番深入研究学说更新模式方法后,我终于发现了一个问题。问题出在表名上 - “table.order”和“table.user”。当原则进行 diff 时,由于内部转义(?),这些名称变得不相等。因此,“user”!= user,并且这些表(订单、用户)的外键总是重新创建。
解决方案 #1 - 只需重命名表以避免名称与 postgresql 关键字匹配,例如 my_user、my_order。 解决方案#2 - 手动转义表名称。这对我不起作用,尝试了很多不同的逃避方法。
我已经应用了解决方案#1,现在我看到:
无需更新 - 您的数据库已与当前实体元数据同步
| 归档时间: |
|
| 查看次数: |
2287 次 |
| 最近记录: |