doctrine:schema:update给出错误"关系abc已经存在"

时间:2016-02-09 12:45:13

标签: postgresql symfony doctrine-orm

我今天遇到了一个问题,为此我想分享解决方案:

doctrine:schema:update抛出此错误:

Duplicate table: 7 ERROR: the relation abc already exists.

就我而言,这是在从PostgreSQL 9.4升级到9.5以及从Symfony 2.7升级到2.8之后发生的。

过了一会儿,我发现它与这个问题有某种关系: Doctrine 2.2 wants to recreate all my tables

详细说明:

  • 当针对空数据库运行时,doctrine:schema:update正常工作(即创建所有内容)。
  • 第二次运行时,我收到上述错误。所以看起来Doctrine无法找到现有的表格。
  • 非常奇怪:Symfony应用程序正常运行!即Doctrine 原则上找到表 - 只是在执行schema:update

1 个答案:

答案 0 :(得分:0)

这是我的答案 - 感谢@tetranz:How do I specify which schema to use for Doctrine 2.2 / Symfony 2.2 and PostgreSQL?

  1. 在pgAdmin III中,点击File> Open postgresql.conf(此文件位于数据库数据所在的位置)。
  2. 寻找名为search_path的设置(它位于顶部)。
  3. 激活此设置(即点击复选标记)并将其值从"$user", public修改为public
  4. 我的猜测:
    当正常"运行"时,Doctrine确实找到了表,因为我确实在配置文件(* .yml)中指定了模式。但是当查找带有schema:update的表时,Doctrine省略了模式,从而回退到PostgreSQL的默认搜索路径,即"$user"(即当前PostgreSQL用户的用户名,通常postgres)。所以对我来说,这看起来像是一个主义错误。