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

我正在编写一个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

如何成功运行查询?


慕妹3242003
浏览 3409回答 3
3回答

catspeake

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

qq_笑_17

发生此问题的原因是在pgAdmin3中,因为表名不是表名,而是表名。例如&nbsp;如果将用户显示为表名称,则表名称为“用户”。
打开App,查看更多内容
随时随地看视频慕课网APP