【问题标题】:org.postgresql.util.PSQLException: ERROR: column "id" does not exist - Java Web Serviceorg.postgresql.util.PSQLException:错误:列“id”不存在 - Java Web 服务
【发布时间】:2016-09-10 01:23:27
【问题描述】:

我正在开发一个广泛部署的 java web 服务。它连接到一个 postgresql 数据库。 在这个数据库中,我有一个名为 xx_activity 的表。其中有一个名为“id”的列,它也是主键。 这是用于创建表的查询:

CREATE TABLE xx_activity
(
  id serial NOT NULL,
  baseitemid integer
);

要连接到这个表,我使用下面的 java 代码:

conn = postgresVoyateDBConnection();
            query = conn.prepareStatement("select id, baseitemid" +
                                            "from xx_activity " +
                                            "where \"id\" = ? ");
            
            query.setInt(1, id);
            ResultSet rs = query.executeQuery();

但是,当我调用包含此代码的方法时,出现错误:

org.postgresql.util.PSQLException:错误:列“id”不存在

位置:8

这很令人困惑,因为我当然有这个专栏。我根据this answer 添加了转义字符,但它并没有解决问题。

还要注意不带 where 子句的查询,例如:

conn = postgresVoyateDBConnection();
        query = conn.prepareStatement("select id, baseitemid " +
                                        "from xx_activity");
        
        ResultSet rs = query.executeQuery();

完美运行。

我也尝试过不使用转义字符,但它给出了同样的错误。我还检查了 pgadmin 并且列名中没有尾随空格,也没有涉及任何大写字母(在这种情况下,其他选择查询不应该工作?)。

如何解决这个问题?

【问题讨论】:

  • 使用 pgAdmin 或其他工具连接到您的数据库,使用的凭据与您在应用程序中使用的凭据相同。执行select * from xx_activity结果中是否有id列?检查您是否有两个 xx_activity 表 - 一个在公共架构中,另一个在用户架构中。
  • @112g 只有 1 个模式,即公共模式。我尝试了一个选择并且它可以工作,即使是从java代码。此外,即使 where 子句在 pgadmin 中也有效,想知道为什么它在代码中无效?

标签: java postgresql jdbc


【解决方案1】:

解决了这个问题,问题是缺少空格。在查询的第一行之后,需要有一个空格,如下所示:

query = conn.prepareStatement("select id, baseitemid " +
                                            "from xx_activity " +
                                            "where \"id\" = ? ");

编辑id 不需要转义字符;所以最终答案应该是:

 query = conn.prepareStatement("select id, baseitemid " +
                                                "from xx_activity " +
                                                "where id = ? ");

【讨论】:

  • 你为什么要把id放在引号里?这不是必需的。
猜你喜欢
  • 2018-01-28
  • 1970-01-01
  • 1970-01-01
  • 2020-01-07
  • 2021-03-19
  • 1970-01-01
  • 1970-01-01
  • 2017-04-11
  • 2015-10-09
相关资源
最近更新 更多