一尘不染

PostgreSQL“ olumn不存在”,但实际上确实存在

sql

我正在编写一个Java用于自动构建和运行SQL查询的应用程序。对于许多表,我的代码工作正常,但在某些表上会抛出以下异常而卡住:

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

如何成功运行查询?


阅读 203

收藏
2021-05-05

共1个答案

一尘不染

尝试将其用双引号引起来-如"Continent"查询中所示:

SELECT "Continent"
FROM network.countries
...
2021-05-05