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

如何成功运行查询?

原文由 BullyWiiPlaza 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 627
1 个回答

尝试将其放入双引号中 - 例如 "Continent" 在查询中:

 SELECT "Continent"
FROM network.countries
...

原文由 Eugene Lisitsky 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进