Postgresql:“-”处或附近的语法错误
Posted
技术标签:
【中文标题】Postgresql:“-”处或附近的语法错误【英文标题】:Postgresql : syntax error at or near "-" 【发布时间】:2013-09-10 11:33:07 【问题描述】:我正在尝试运行查询以更新用户密码。
alter user dell-sys with password 'Pass@133';
但是因为-
它给了我这样的错误,
ERROR: syntax error at or near "-"
LINE 1: alter user dell-sys with password 'Pass@133';
^
谁能给它遮光?
【问题讨论】:
postgresql.org/docs/current/static/… 【参考方案1】:用双引号括起来
alter user "dell-sys" with password 'Pass@133';
请注意,您必须使用与使用双引号创建用户时相同的大小写。假设您创建了"Dell-Sys"
,那么每当您引用该用户时,您都必须发出完全相同的问题。
我认为最好的做法是删除该用户并在没有非法标识符字符和双引号的情况下重新创建,以便以后在任何情况下都可以引用它。
【讨论】:
试过这个,它给出了 ERROR: syntax error at or near "alter" LINE 2: alter user "dell-sys" with password 'Pass@133'; @Heliconia 你确定你的上一行是以分号结尾的吗?【参考方案2】:我已经在我的系统中重现了这个问题,
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
【讨论】:
【参考方案3】:我试图将特定表的只读权限授予名为 walters-ro 的用户。所以当我运行 sql 命令时 # GRANT SELECT ON table_name TO walters-ro; --- 我收到以下错误..`在“-”或附近出现语法错误
解决方案基本上是将用户名放在双引号中,因为名称之间有一个破折号(-)。
# GRANT SELECT ON table_name TO "walters-ro";
这解决了问题。
【讨论】:
以上是关于Postgresql:“-”处或附近的语法错误的主要内容,如果未能解决你的问题,请参考以下文章
PostgreSQL 与 TypeORM 错误“在 \"Sep\" 处或附近出现语法错误”
Postgresql 字符串连接:错误:“msg”处或附近的语法错误