我正在開發一個狂放地部署的java web服務。它連接到一個postgresql數據庫。 在這個數據庫中,我有一個名爲xx_activity的表。其中有一個名爲「id」的列,它也是主鍵。 下面是用於創建表的查詢:org.postgresql.util.PSQLException:錯誤:列「id」不存在 - Java Web服務
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: ERROR: column "id" does not exist
Position: 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
@ 112g只有1個模式,即公共模式。我嘗試了一個選擇,它的工作,即使從Java代碼。另外,即使是where子句從pgadmin開始工作,想知道爲什麼它不能從代碼中工作? –