簡體   English   中英

org.postgresql.util.PSQLException:錯誤:列“id”不存在 - Java Web 服務

[英]org.postgresql.util.PSQLException: ERROR: column "id" does not exist - Java Web Service

我正在開發一個廣泛部署的 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,列名中沒有尾隨空格,也沒有涉及任何大寫字母(在這種情況下,另一個選擇查詢不應該起作用?)。

如何解決這個問題?

解決了這個問題,問題是缺少空間。 在查詢的第一行之后,需要有一個空格,如下所示:

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

編輯id不需要轉義字符; 所以最終答案應該是:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM