8

执行 rake db:create:all 时出现错误 FATAL role does not exist。

这里的帖子提出了同样的问题,只是答案不起作用。

Travis CI:致命:角色不存在

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

打字

CREATE ROLE X SUPERUSER 
CREATE ROLE X CREATEDB LOGIN 

或与此相关的任何事情,在 postgres=# 提示符下什么都不做。绝对没有。它不会给我任何成功或失败消息或任何确认消息。

当我键入 \du 来列出角色时,只有 postgres 角色在那里。

4

2 回答 2

15

我发现就像 MySQL 一样,postgresql 要求我在命令末尾使用分号。

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

于 2012-10-02T19:27:38.157 回答
0

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

如果这没有发生,可能是因为该语句没有发送到服务器。正如其他人指出的那样,您缺少 ; 在命令的末尾。按 ctrl-C 取消当前命令,然后重新开始。CTRL-C 只会中止当前命令,不会杀死 psql,所以不用担心。

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

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

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

  • = 用于新命令行(即不继续,引用等)
  • - 对于续行
  • $ 用于引用字符串,使用 $quote$ 语法
  • ' 用于使用 'literal' 语法的引用文字
  • " 用于使用“标识符”语法的带引号的标识符

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

于 2012-10-03T00:45:10.930 回答