postgresql:CREATE ROLE不起作用

时间:2012-10-02 19:15:56

标签: ruby-on-rails postgresql

我在执行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 :(得分:10)

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

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

答案 1 :(得分:0)

当执行CREATE ROLE时,你应该得到一个确认,说明,CREATE ROLE。

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

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

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

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

  • =用于新命令行(即不继续,引用等)
  • - 续行
  • $ for quoted string using $ quote $ syntax
  • '用于引用文字,使用'literal'语法
  • “使用”标识符“语法
  • 的引用标识符

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