postgres 错误:Postgresql 11.6 中的列不存在错误
Posted
技术标签:
【中文标题】postgres 错误:Postgresql 11.6 中的列不存在错误【英文标题】:postgres error: column doesn't exist error in Postgesql 11.6 【发布时间】:2020-11-12 19:36:14 【问题描述】:我正在尝试通过以下语法在 postgresql 11.6 上运行更新命令
update "YP_SUPPLIERS" set "YP_SUPPLIERS.supplierName" = "update" where "YP_SUPPLIERS.supplierID" = da68e9d0-1100-43e2-0011-db8fbe654321;
我收到以下错误
ERROR: column "YP_SUPPLIERS.supplierID" does not exist
第 1 行:...设置 "YP_SUPPLIERS.supplierName" = "update" where "YP_SUPPLI...
只给出列名,删除引号,但似乎没有任何效果。
谁能给我一个正确的方法。
【问题讨论】:
你真的应该避免那些可怕的引用标识符。他们的麻烦比他们的价值要多得多。 wiki.postgresql.org/wiki/… 【参考方案1】:您需要单独引用每个元素,并且针对目标列不需要重复表格。在 SQL 中,字符串常量需要用单引号 ('
) 括起来。双引号仅用于标识符。
update "YP_SUPPLIERS"
set "supplierName" = 'update' --<< single quotes for constant values
-- ^ no table name here
where "YP_SUPPLIERS"."supplierID" = 'da68e9d0-1100-43e2-0011-db8fbe654321';
-- ^ schema and table name must be quoted separately
【讨论】:
成功了。为什么这么复杂有没有其他方法可以做到这一点? 一点也不复杂。当您使用带引号的标识符创建表时,它变得复杂了。如果你从不在 SQL 中使用双引号,从长远来看,你会少很多麻烦。以上是关于postgres 错误:Postgresql 11.6 中的列不存在错误的主要内容,如果未能解决你的问题,请参考以下文章
Laravel 5 + PostgreSQL:“未配置数据库 [postgres]。”错误
Postgres 11 问题:服务器上的“SSL 错误:DATA_LENGTH_TOO_LONG”错误
Postgres 错误方法 org.postgresql.jdbc.PgConnection.createClob() 未实现
与 postgres 和套接字“/var/run/postgresql/.s.PGSQL.5432”相关的引擎场错误
PostgreSQL提示:‘psql: FATAL: ”Peer authentication failed for user ”postgres“’错误