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 中的列不存在错误的主要内容,如果未能解决你的问题,请参考以下文章

postgresql无法正常启动的原因追查

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“’错误