Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PostgreSql不理解列名_Sql_Postgresql_Columnname - Fatal编程技术网

PostgreSql不理解列名

PostgreSql不理解列名,sql,postgresql,columnname,Sql,Postgresql,Columnname,我已经在PostgreSql中创建了表: DROP TABLE IF EXISTS es_events; CREATE TABLE IF NOT EXISTS es_events (   id SERIAL,   name VARCHAR (50) NOT NULL,   version INT NOT NULL,   data BYTEA NOT NULL ); 现在我尝试从这个表中选择: SELECT COALESCE(MAX(version),0)

我已经在PostgreSql中创建了表:

DROP TABLE IF EXISTS es_events;

CREATE TABLE IF NOT EXISTS es_events (
  id SERIAL,
  name VARCHAR (50) NOT NULL,
  version INT NOT NULL,
  data BYTEA NOT NULL
);
现在我尝试从这个表中选择:

SELECT COALESCE(MAX(version),0)
                            FROM public.es_events
                            WHERE name = 'asd';
但结果我收到:

ERROR:  column "version" does not exist
LINE 1: SELECT COALESCE(MAX(version),0)
                            ^
HINT:  Perhaps you meant to reference the column "es_events.  version".
SQL state: 42703
Character: 21
我尝试使用es_事件。版本,但它没有帮助:

ERROR:  column "es_events.  version" does not exist
LINE 1: SELECT COALESCE(MAX("es_events.  version"),0)
                            ^
SQL state: 42703
Character: 21
我做错了什么?如何从表格中选择

# psql --version
psql (PostgreSQL) 13.3 (Debian 13.3-1.pgdg100+1)

根据错误消息,您创建的表中有一个名为version的列,该列有两个前导空格,而不是version

您可以重命名该列:

ALTER TABLE es_events RENAME "  version" to version;
“创建表”中有空格,修复表创建后,脚本名称开始正确工作:

CREATE TABLE IF NOT EXISTS es_events (id SERIAL,name VARCHAR (50) NOT NULL,version INT NOT NULL,data BYTEA NOT NULL)

这是一个非常重要的事件。版本似乎表明名称中有隐藏的空格字符。使用select COALEACEMAXES_事件尝试选择。版本,0或选择COALESCEMAX版本,0以确认`.@eshirvana,否错误仅显示发生错误的行。它不包括查询的其余部分,因为它不相关。我尝试使用es_事件。版本而不是版本,结果相同-错误:列es_事件。版本不存在名称中有多个空格。剪切并粘贴错误返回的列名。还要在您的问题中添加psql中\dt es_事件的输出。谢谢!我已经用REATE table IF NOT EXISTS es_事件id SERIAL、名称VARCHAR 50 NOT NULL、版本INT NOT NULL、data BYTEA NOT NULL重新创建了一个表,这很有帮助。但是为什么它以前是用空格创建的呢?如何转义列名?//我在的帮助下创建了表pgAdmin@MaximKitsenko. 使用psql,pgAdmin只是一个不必要的层,它的作用远远大于它的帮助。列名是使用这些引号转义的。我无法说明您创建此列时做了什么。可能在GUI中输入了一个带有两个前导空格的值。