首页 文章

postgresql:CREATE ROLE不起作用[关闭]

提问于
浏览
5

我在执行rake db:create:all时得到错误FATAL角色不存在 .

这里的帖子提出了同样的问题,但答案不起作用 .

Travis CI: FATAL: role does not exist

我用这种方式进入postgresql控制台:'sudo -u postgres psql'

打字

CREATE ROLE X SUPERUSER 
CREATE ROLE X CREATEDB LOGIN

或者任何事情,在postgres =#prompt什么都不做 . 绝对没有 . 它不会给我成功或失败的消息或任何确认消息 .

当我输入\ du列出角色时,只有postgres角色存在 .

2 回答

  • 0

    我发现它和MySQL很像,postgresql要求我在命令末尾使用半冒号 .

    我已经习惯了MS SQl而不需要它 .

  • 7

    当执行CREATE ROLE时,你应该得到一个确认,即,CREATE ROLE .

    如果没有发生这种情况,可能是因为该语句没有被发送到服务器 . 正如另一个人指出的那样,你错过了;在命令的最后 . 按ctrl-C取消当前命令,然后重新开始 . CTRL-C只会中止当前命令,而不是杀死psql,所以不要担心 .

    关于psql命令行工具的一个巧妙之处是提示符告诉你很多事情 . 如果你看,你会在登录时看到类似postgres =#的东西 .

    postgres是数据库名称,=是行状态(请参阅下面的详细信息),#表示您是超级用户 . 如果您不是超级用户,则最后一个字符将是> .

    线路状态很有趣,它可以是以下任何一种:

    • =用于新命令行(即不继续,引用等)

      • 续行
    • $用于引用字符串,使用$ quote $语法

    • ' for quoted literal using ' literal'语法

    • " for quoted identifier using " identifier“语法

    意识到这一点并注意提示会在以后节省无数问题 .

相关问题