Rails和PostgreSQL:angular色postgres不存在
我在我的Mac OS Lion上安装了PostgreSQL,并且正在使用Rails应用程序。 我使用RVM保持与其他Rails应用程序分离的一切。
由于某些原因,当我第一次尝试迁移数据库时,rake找不到postgres用户。 我得到错误
FATAL: role "postgres" does not exist
我有pgAdmin,所以我可以清楚地看到在DB中有一个postgres用户 – 事实上的pipe理员帐户 – 所以我不知道该怎么办。
我读了一些关于PostgreSQL有问题的人,因为它安装了哪个path,但是如果找不到数据库的话我不会想那么多。
当数据库用户不存在时,popup此消息。 比较手册在这里 。
多个本地数据库 不能解释。 angular色在群集范围内有效。 手册再次 :
请注意,angular色是在数据库群集级别定义的,因此在群集中的所有数据库中都是有效的。
您必须在另一个数据库集群中结束。 这将是在同一台机器上运行的另一台服务器,正在侦听不同的端口。 或者更有可能在不同的机器上。
事实上,从远程服务器来的消息是不是可能呢?
其实,由于某些未知的原因,我发现这个问题实际上是因为postgresqlangular色没有被创build。
尝试运行:
createuser -s -r postgres
请注意,angular色是PostgreSQL 维护数据库权限的方式 。 如果没有postgres用户的angular色,那么它不能访问任何东西。 createuser命令是CREATE USER,CREATE ROLE等命令的简单包装 。
最近我安装postgres后立即得到这个问题。 如果安装后立即出现,则可能缺less默认用户postgres。 在这种情况下,您可以使用下面的命令创build默认用户postgres。
createuser -s -U $ USER
Ex: createuser -s -U $USER enter your required role name: postgres enter password for your the user:
它会提示您input所需的数据库angular色名称和密码一旦完成该过程,您可以使用以下命令login到postgres控制台
psql -U 'your_database_name'
例如:psql -U postgres
在这里,您需要在创build用户时input密码。
希望能帮助到你 :)
我在OSX 10.8上,而且我尝试的所有东西都会给我带来FATAL: role "USER" does not exist
。 就像许多人在这里所说的那样,运行createuser -s USER
,但是那给了我同样的错误。 这终于为我工作:
$ sudo su # su postgres # createuser -s --username=postgres MYUSERNAME
createuser -s --username=postgres
通过连接为postgres(–username = postgres标志)创build超级用户(-s标志)。
我看到你的问题已经被回答了,但是我想为使用OSX的人们添加这个答案,试图安装PostgreSQL 9.2.4。
当我第一次安装Heroku的POSTGRES.app的时候,我遇到了这个问题。 经过一天早上的试验和错误,我认为这一行代码解决了问题。 如前所述,这是因为postgresql在第一次设置时没有默认的angular色。 我们需要设置。
sovanlandy=# CREATE ROLE postgres LOGIN;
您必须login到您的psql控制台才能使用此psql命令。
还要注意的是,如果您已经创build了'postgre'这个angular色,但是仍然有权限错误,那么您需要使用以下命令进行修改:
sovanlandy=# ALTER ROLE postgres LOGIN;
希望能帮助到你!
在Heroku文档中; 他们说:
你还需要删除你的database.yml中的username字段,如果有的话:在文件config / database.yml中删除:username:myapp
那么你只要在“development:”中删除那行,如果你不告诉数据库在angular色“myapp”下工作,
这一行告诉rails数据库myapp_development应该在myapp的angular色下运行。 由于您可能在数据库中没有这个angular色,我们将删除它。 用行删除Rails将尝试以当前login到计算机的用户身份访问数据库。
还要记住创build用于开发的数据库:
$createdb myapp_development
为您的应用名称重新填入“myapp”
你可以有多个本地数据库? 检查你的database.yml
,并确保你打到你想要的PG数据库。 使用rails console
进行确认。
在Ubuntu本地用户命令提示符下,但不是root用户,键入
sudo -u postgres createuser用户名
上面的用户名应该与消息“FATAL:role'用户名'不存在”中指定的名称匹配。
input用户名的密码。
然后重新input生成angular色不存在的消息的命令。
在尝试按照Ryan Bate的教程部署到使用橡胶的AWS EC2之后,我在这里结束了。 以下是我发生的事情:我们创build了一个新的应用程序,使用“
rails new blog -d postgresql
显然这创build了一个新的应用程序与数据库的pg,但数据库还没有制定。 用sqlite,你只需运行rake db:migrate,但是用pg你需要先创buildpg数据库。 瑞安没有做这一步。 命令是rake db:create:all
,那么我们可以运行rake db:migrate
第二部分是更改database.yml文件。 生成文件时用户名的默认值是“appname”。 然而,你的postgresqlpipe理员的angular色可能是不同的(至less是我)。 我把它改成了我的名字(见上面有关创buildangular色名称的build议),我很高兴。
希望这可以帮助。
经过一堆Postgres的安装和卸载之后,现在看起来像Os X Mavericks,Rails 4和Ruby 2一直在为我工作。
-
在database.yml文件中,我将默认用户名更改为我的计算机用户名,对我而言,这只是“admin”。
-
在命令行运行rake db:create:all
-
然后我运行rake db:migrate
-
当我运行rails服务器,并检查本地主机说:“欢迎登机”。
我的回答更简单。 刚刚去了db文件夹,并删除了id列,我试图强制创build,但实际上是自动创build的。 我也删除了database.yml文件中的USERNAME(在config文件夹下)。
您可以通过运行initdb -U postgres -D /path/to/data
或以用户postgres运行它,因为它默认为当前用户。 GL!