【问题标题】:doctrine:schema:update gives error "the relation abc already exists"学说:模式:更新给出错误“关系 abc 已经存在”
【发布时间】:2016-02-09 12:45:13
【问题描述】:

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

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 无法find已经存在的表。
  • 真正奇怪的是:Symfony 应用程序可以工作! IE。原则确实找到表格 - 只是在做 schema:update 时找不到

【问题讨论】:

    标签: postgresql symfony doctrine-orm


    【解决方案1】:

    这是我的答案 - 感谢@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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-07-03
      • 2014-06-13
      • 2022-06-26
      • 2019-01-03
      • 2013-02-04
      • 2018-10-05
      相关资源
      最近更新 更多