我正在编写一个Java用于自动构建和运行SQL查询的应用程序。对于许多表,我的代码工作正常,但在某些表上会抛出以下异常而卡住:
Java
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从该列返回非空值。
5
我不明白为什么在pgAdmin 4中确实出现“列不存在”错误。我可以看到有一个名称Network包含该表的架构,countries并且该表具有一个Continent按预期方式命名的列。
Network
countries
Continent
由于所有列,模式和表名均由应用程序本身检索,所以我认为没有拼写或语义错误,因此PostgreSQL为什么会引起问题?在pgAdmin4中运行查询或使用建议的查询countries.Continent均有效。
countries.Continent
我的PostgreSQL版本是到目前为止的最新版本:
$ psql --version psql (PostgreSQL) 9.6.1
如何成功运行查询?
尝试将其用双引号引起来-如"Continent"查询中所示:
"Continent"
SELECT "Continent" FROM network.countries ...