我在写一封信 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
如何成功运行查询?
3条答案
按热度按时间pkmbmrz71#
试着把它用双引号括起来-就像
"Continent"
在查询中:d6kp6zgx2#
发生此问题的原因是,在pgadmin3中,表名不是tablename,而是“tablename”。例如,如果将user显示为表名,则表名为“user”。
看这个:
zf2sa74q3#
在使用sqlalchemy环境时,我在sql中遇到了这样的错误,
错误:“广场”列不存在
好吧,我改了==by=,错误仍然存在,然后我交换了引号,如下所示。成功了。奇怪的!