PostgreSQL "Column does not exist" 但它确实如此
PostgreSQL "Column does not exist" but it actually does
我正在编写一个 Java
应用程序来自动构建和 运行 SQL 查询。对于许多 table,我的代码工作正常,但在某些 table 上,它因抛出以下异常而卡住:
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
这实际上是 returns 5
列中的非空值。
我不明白为什么在 pgAdmin 4 中出现 "column does not exist" 错误。我可以看到有一个名为 Network
的架构,其中包含 table countries
并且 table 有一个名为 Continent
的列,正如预期的那样。
由于所有列、模式和 table 名称都是由应用程序本身检索的,我不认为存在拼写或语义错误,那么为什么 PostgreSQL 会导致问题呢? 运行 pgAdmin4 中的查询或使用建议的 countries.Continent
都有效。
我的 PostgreSQL 版本是目前最新的:
$ psql --version
psql (PostgreSQL) 9.6.1
怎样才能运行查询成功?
尝试将其放入双引号中 - 如查询中的 "Continent"
:
SELECT "Continent"
FROM network.countries
...
在使用 SQLAlchemy 环境时,我遇到了这样的 SQL 错误,
db.session.execute(
text('SELECT name,type,ST_Area(geom) FROM buildings WHERE type == "plaza" '))
错误:列 "plaza" 不存在
好吧,我把 == 改成了 = ,错误仍然存在,然后我交换了引号,如下所示。有效。奇怪!
....
text("SELECT name,type,ST_Area(geom) FROM buildings WHERE type = 'plaza' "))
此问题出现在 postgres 中,因为 table 名称不是 tablename,而是“tablename”。
例如。
如果将用户显示为 table 名称,
比 table 名称是“用户”。
看到这个:
我正在编写一个 Java
应用程序来自动构建和 运行 SQL 查询。对于许多 table,我的代码工作正常,但在某些 table 上,它因抛出以下异常而卡住:
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
这实际上是 returns 5
列中的非空值。
我不明白为什么在 pgAdmin 4 中出现 "column does not exist" 错误。我可以看到有一个名为 Network
的架构,其中包含 table countries
并且 table 有一个名为 Continent
的列,正如预期的那样。
由于所有列、模式和 table 名称都是由应用程序本身检索的,我不认为存在拼写或语义错误,那么为什么 PostgreSQL 会导致问题呢? 运行 pgAdmin4 中的查询或使用建议的 countries.Continent
都有效。
我的 PostgreSQL 版本是目前最新的:
$ psql --version
psql (PostgreSQL) 9.6.1
怎样才能运行查询成功?
尝试将其放入双引号中 - 如查询中的 "Continent"
:
SELECT "Continent"
FROM network.countries
...
在使用 SQLAlchemy 环境时,我遇到了这样的 SQL 错误,
db.session.execute(
text('SELECT name,type,ST_Area(geom) FROM buildings WHERE type == "plaza" '))
错误:列 "plaza" 不存在
好吧,我把 == 改成了 = ,错误仍然存在,然后我交换了引号,如下所示。有效。奇怪!
....
text("SELECT name,type,ST_Area(geom) FROM buildings WHERE type = 'plaza' "))
此问题出现在 postgres 中,因为 table 名称不是 tablename,而是“tablename”。 例如。 如果将用户显示为 table 名称, 比 table 名称是“用户”。
看到这个: