【问题标题】:ERROR Relation already exists in PostgreSQL when creating an index on a table在表上创建索引时,PostgreSQL 中已经存在错误关系
【发布时间】:2014-02-22 23:52:27
【问题描述】:

从 Java 代码在 PostgreSQL 上运行以下查询时出现错误

 .....
 sql =  "CREATE TABLE IF NOT EXISTS table1 (s VARCHAR(100), p VARCHAR(100), o VARCHAR(100), PRIMARY KEY (s,p,o)) ; ";                   
 pgsql.runUpdateQuery(sql);         

 sql =  "CREATE INDEX indextable1 ON table1 (s,p,o);";  
 pgsql.runUpdateQuery(sql);         
 .....

但我得到以下错误

org.postgresql.util.PSQLException: ERROR: relation "indextable1" already exists         

有人可以解释一下发生了什么吗?我的理解是PRIMARY KEY 被认为是INDEX,因此第二个查询失败。我说的对吗?

【问题讨论】:

  • 架构中有另一个名为 indextable1 的索引(或表)。这与列列表已被索引这一事实无关。
  • @a_horse_with_no_name 谢谢,我在再次运行查询之前清理了所有数据库,现在一切顺利。

标签: postgresql indexing


【解决方案1】:

问题是主键约束名等于表名。我不知道 postgres 如何表示约束,但我认为在创建主键约束期间触发了错误“关系已存在”,因为表已经被声明。但是由于这个错误,最后没有创建表。

【讨论】:

    猜你喜欢
    • 2016-05-27
    • 2017-05-19
    • 1970-01-01
    • 1970-01-01
    • 2013-03-20
    • 1970-01-01
    • 1970-01-01
    • 2014-06-13
    • 1970-01-01
    相关资源
    最近更新 更多