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

lskq00tm  于 2023-01-30  发布在  PostgreSQL
关注(0)|答案(4)|浏览(273)

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

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

但由于-,它给了我错误,

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

谁能给它罩上一盏灯?

bvn4nwqk

bvn4nwqk1#

我已经在我的系统里重现了这个问题,

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

问题是
psql正在请求输入,而您再次给出了alter查询,请参见postgres-#,这就是alter处出现错误的原因

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
2sbarzqh

2sbarzqh2#

用双引号括起来

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

请注意,您必须使用与创建用户时相同的大小写(使用双引号),假设您创建了"Dell-Sys",则无论何时引用该用户,都必须发出完全相同的大小写。
我认为您最好删除该用户,然后重新创建,但不使用非法标识符字符和双引号,以便以后可以在任何情况下引用它。

iecba09b

iecba09b3#

我试图将一个特定表的只读权限授予一个叫walters-ro的用户,所以当我运行sql命令# GRANT SELECT ON table_name TO walters-ro;---我得到以下错误..'在“-"处或其附近有语法错误
这个问题的解决方案基本上是将user_name放在双引号中,因为名称之间有一个破折号(-)。

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

这就解决了问题。

yv5phkfx

yv5phkfx4#

我得到了类似的错误如下:
错误:“)”处或其附近有语法错误
第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
);

然后,错误得到解决:

CREATE TABLE

相关问题