原则:模式:更新给出错误"the relation abc already exists"



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

doctrine:schema:update抛出此错误:

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

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

过了一会儿,我发现它与这个问题有某种关系:教义 2.2 想要重新创建我所有的表

详:

  • 当对空数据库运行时,doctrine:schema:update工作正常(即创建所有内容)。
  • 第二次运行时,我收到上面的错误。所以看起来 Doctrine 找不到已经存在的表格。
  • 真正奇怪的是:Symfony应用程序可以工作! 即教义原则上确实找到了表格 - 只是在做schema:update时没有
这是我

的答案 - 感谢@tetranz: 如何指定用于 Doctrine 2.2/Symfony 2.2 和 PostgreSQL 的模式?

  1. 在 pgAdmin III 中,单击"File> Open postgresql.conf"(此文件位于数据库数据所在的位置)。
  2. 查找名为 search_path 的设置(它位于顶部)。
  3. 激活此设置(即单击复选标记)并将其值从 "$user", public 修改为 public

我的猜测:
当"正常"运行时,Doctrine 确实会找到该表,因为我确实在配置文件 (*.yml) 中指定了架构。但是当查找带有schema:update的表时,Doctrine 省略了模式,从而回退到 PostgreSQL 的默认搜索路径,即"$user"(即当前 PostgreSQL 用户的用户名,通常postgres)。所以对我来说,这看起来像一个教义错误。

相关内容

最新更新