org.postgresql.util.PSQLException:错误:列";id";不存在-Java Web服务

org.postgresql.util.PSQLException:错误:列";id";不存在-Java Web服务,java,postgresql,jdbc,Java,Postgresql,Jdbc,我正在开发一个java web服务,它被广泛部署。它连接到postgresql数据库。 在这个数据库中,我有一个名为xx_activity的表。其中有一个名为“id”的列,它也是主键。 以下是用于创建表的查询: CREATE TABLE xx_activity ( id serial NOT NULL, baseitemid integer ); 要连接到此表,我使用以下java代码: conn = postgresVoyateDBConnection(); q

我正在开发一个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

这令人困惑,因为我肯定有这个专栏。我按照添加了转义字符,但这并没有解决问题

还要注意,没有where子句的查询,如:

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

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


如何修复此问题?

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

query = conn.prepareStatement("select id, baseitemid " +
                                            "from xx_activity " +
                                            "where \"id\" = ? ");
编辑:id不需要转义字符;所以最后的答案应该是:

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

使用pgAdmin或其他工具,使用与应用程序中相同的凭据连接到数据库。执行
select*from xx_activity
结果中是否有id列?检查是否有两个
xx_activity
表-一个在公共架构中,另一个在用户架构中。@112g只有一个架构,即公共架构。我尝试了一个select,它可以工作,即使是从java代码。此外,甚至where子句也可以从pgadmin开始工作,想知道为什么它不能从代码开始工作?为什么要将
id
放在引号中?这不是必需的。