PostgreSQL 中“-”处或附近的语法错误

问题描述 投票:0回答:5

我正在尝试运行查询来更新用户密码。

alter user dell-sys with password 'Pass@133';

但是因为

-
它给了我这样的错误,

ERROR:  syntax error at or near "-"
LINE 1: alter user dell-sys with password 'Pass@133';
                       ^

有人可以在上面遮光吗?

sql database postgresql syntax-error alter
5个回答
61
投票

我已在我的系统中重现了该问题,

postgres=# alter user my-sys with password 'pass11';
ERROR:  syntax error at or near "-"
LINE 1: alter user my-sys with password 'pass11';
                       ^

问题来了,

psql 正在要求输入,并且您再次给出了更改查询,请参阅

postgres-#
这就是为什么它在更改时给出错误

postgres-# alter user "my-sys" with password 'pass11';
ERROR:  syntax error at or near "alter"
LINE 2: alter user "my-sys" with password 'pass11';
        ^

解决方案就像错误一样简单,

postgres=# alter user "my-sys" with password 'pass11';
ALTER ROLE

28
投票

用双引号括起来

alter user "dell-sys" with password 'Pass@133';

请注意,您必须使用与使用双引号创建用户时使用的相同大小写。假设您创建了

"Dell-Sys"
,那么每当您引用该用户时,您都必须发出完全相同的信息。

我认为你最好做的就是删除该用户并重新创建,不包含非法标识符字符和双引号,这样你以后就可以在任何你想要的情况下引用它。


1
投票

我试图将特定表的只读权限授予名为 walters-ro 的用户。因此,当我运行 sql 命令时 # GRANT SELECT ON table_name TO walters-ro; --- 我收到以下错误..`“-”处或附近的语法错误

此问题的解决方案基本上是将 user_name 放入双引号中,因为名称之间有破折号(-)。

# GRANT SELECT ON table_name TO "walters-ro";

问题就解决了。


0
投票

我遇到了以下类似的错误:

错误:“)”处或附近有语法错误
第 4 行:);

因为我错误地加了一个逗号,如下所示:

CREATE TABLE person(
  id SERIAL PRIMARY KEY,
  name VARCHAR(20),
               -- ↑ A trailing comma
);

所以,我删除了结尾的逗号,如下所示,然后错误就解决了:

CREATE TABLE person(
  id SERIAL PRIMARY KEY,
  name VARCHAR(20)
               -- ↑ No trailing comma
);

0
投票

如果您在 2024 年并在重置密码时遇到此问题 您所需要做的就是将密码用单引号括起来即可工作

alter user postgres with password 'Pass@133';

© www.soinside.com 2019 - 2024. All rights reserved.