代码之家  ›  专栏  ›  技术社区  ›  OpenCurious

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

  •  41
  • OpenCurious  · 技术社区  · 11 年前

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

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

    但因为 - 它给了我错误,就像,

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

    有人能给它遮光吗?

    4 回复  |  直到 11 年前
        1
  •  58
  •   Atul Arvind    4 年前

    我已经在我的系统中复制了这个问题,

    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
    
        2
  •  26
  •   Clodoaldo Neto    11 年前

    用双引号括起来

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

    请注意,您将不得不使用与使用双引号创建用户时使用的大小写相同的大小写。假设您创建了 "Dell-Sys" 那么无论何时提及该用户,都必须发布完全相同的内容。

    我认为最好的方法是删除该用户并在没有非法标识符字符和双引号的情况下重新创建,以便以后在任何情况下都可以引用它。

        3
  •  1
  •   a_horse_with_no_name    4 年前

    我试图将特定表的只读权限授予一个名为walters ro的用户。因此,当我运行sql命令#GRANT SELECT ON table_name TO walters ro;---时我犯了以下错误。。 `在或附近出现语法错误-

    解决方法基本上是将user_name放在双引号中,因为名称之间有一个短划线(-)。

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

    这解决了问题。

        4
  •  0
  •   Super Kai - Kazuya Ito    2 年前

    我得到了下面类似的错误:

    错误:“)”处或附近有语法错误
    第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