首页 >数据库 >mysql教程 >尽管列存在,为什么我的 PostgreSQL 查询失败并显示'列\”大陆\”不存在”?

尽管列存在,为什么我的 PostgreSQL 查询失败并显示'列\”大陆\”不存在”?

Susan Sarandon
Susan Sarandon原创
2025-01-20 19:58:12625浏览

Why Does My PostgreSQL Query Fail with

PostgreSQL数据库错误:列“Continent”不存在

问题背景:

一个Java应用程序在查询数据库时遇到错误,提示列“Continent”在特定表中不存在,尽管在pgAdmin 4中已确认该列存在。该查询试图从该列中选择非空值。

问题诊断:

  • 通过pgAdmin 4验证,列“Continent”确实存在于“network.countries”表中。
  • 查询表明应用程序正确获取了列名和表名,排除了拼写或语义错误。
  • 错误信息暗示列名可能需要使用不同的模式或表来引用。

解决方案:

通过在查询中用双引号括起来列名来解决此问题:

<code class="language-sql">SELECT "Continent"
FROM network.countries
...</code>

PostgreSQL要求当列名包含特殊字符或与关键字冲突时,必须用双引号括起来。在本例中,“Continent”是PostgreSQL中的保留关键字,因此需要用引号括起来。

附加说明:

  • 直接在pgAdmin 4中运行查询可能不会遇到相同的错误,因为该界面会自动处理引号。
  • 在查询中使用“countries.Continent”也可能有效,但这引入了对“countries”模式的依赖。用双引号括起列名提供了一个更通用的解决方案,无论表位于哪个模式中,该方案都能正常工作。

以上是尽管列存在,为什么我的 PostgreSQL 查询失败并显示'列\”大陆\”不存在”?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn