48

JavaSQL クエリを自動的に構築して実行するアプリケーションを作成しています。多くのテーブルでは、私のコードは正常に動作しますが、特定のテーブルでは、次の例外がスローされて動かなくなります:

Exception in thread "main" org.postgresql.util.PSQLException: ERROR: column "continent" does not exist
  Hint: Perhaps you meant to reference the column "countries.Continent".
  Position: 8

実行されたクエリは次のとおりです。

SELECT Continent
FROM network.countries
WHERE Continent IS NOT NULL
AND Continent <> ''
LIMIT 5

5これは基本的に、列から空でない値を返します。

pgAdmin 4で明らかに「列が存在しません」というエラーが表示される理由がわかりません。Networkテーブルを含む名前のスキーマがcountriesあり、そのテーブルには期待どおりに呼び出された列があることがわかりますContinent

すべての列、スキーマ、およびテーブル名はアプリケーション自体によって取得されるため、綴りや意味の誤りはないと思いますが、なぜPostgreSQLが問題を引き起こすのでしょうか? pgAdmin4でクエリを実行することも、提案されたものを使用することも機能していませんcountries.Continent

私のPostgreSQLバージョンは現時点で最新です:

$ psql --version
psql (PostgreSQL) 9.6.1

クエリを正常に実行するにはどうすればよいですか?

4

3 に答える 3

68

"Continent"クエリのように、二重引用符で囲むようにしてください。

SELECT "Continent"
FROM network.countries
...
于 2017-01-11T12:50:24.977 に答える