私は荒々しく展開されているJava Webサービスを開発しています。これはpostgresqlデータベースに接続されています。 このデータベースには、xx_activityというテーブルがあります。その中には "id"という列があり、これも主キーです。ここで がテーブルを作成するために使用されるクエリです:私はこのコードを含んでメソッドを呼び出すとき、しかし、org.postgresql.util.PSQLException:エラー:列 "id"が存在しません - Java Webサービス
conn = postgresVoyateDBConnection();
query = conn.prepareStatement("select id, baseitemid" +
"from xx_activity " +
"where \"id\" = ? ");
query.setInt(1, id);
ResultSet rs = query.executeQuery();
:
CREATE TABLE xx_activity
(
id serial NOT NULL,
baseitemid integer
);
このテーブルに接続するには、私は、次のJavaコードを使用します私はエラーが発生します:
org.postgresql.util.PSQLException: ERROR: column "id" does not exist
Position: 8
私は確かにこの列を持っているので、これは混乱しています。 this answerとしてエスケープ文字を追加しましたが、問題は解決しませんでした。完全
conn = postgresVoyateDBConnection();
query = conn.prepareStatement("select id, baseitemid " +
"from xx_activity");
ResultSet rs = query.executeQuery();
作品:
はまたのようなwhere句のないクエリ、ということに注意してください。
エスケープ文字を使用せずに試してみましたが、同じエラーが発生します。私もpgadminをチェックし、カラム名に後続のスペースはなく、大文字も含まれていません(この場合、他の選択クエリは機能していないはずです)。
どのようにこれを修正できますか?
pgAdminなどのツールを使用して、アプリケーションで使用するのと同じ資格情報を使用してデータベースに接続します。 'select * from xx_activity'を実行します。結果にid列はありますか? 2つの 'xx_activity'テーブルがあるかどうかを確認します.1つは公開スキーマ、もう1つはユーザスキーマです。 – 112g
@ 112g公開スキーマが1つだけです。私は選択を試み、それは、Javaコードからも、動作します。また、where節もpgadminから動作し、なぜコードからはうまくいかないのだろうか? –