Ada*_*dam 104 postgresql rake ruby-on-rails
我在我的Mac OS Lion上安装了PostgreSQL,正在开发一个rails应用程序.我使用RVM将所有内容与其他Rails应用程序分开.
出于某种原因,当我第一次尝试迁移数据库时,rake无法找到postgres用户.我收到了错误
FATAL: role "postgres" does not exist
Run Code Online (Sandbox Code Playgroud)
我有pgAdmin所以我可以清楚地看到数据库中有一个postgres用户 - 实际上是管理员帐户 - 所以我不知道还能做什么.
我在某处读过有关PostgreSQL问题的人,因为它安装了哪条路径,但是如果它找不到db那么我认为我不会那么远.
小智 257
实际上,由于某些未知原因,我发现问题实际上是因为没有创建postgresql角色.
试试跑步:
createuser -s -r postgres
Run Code Online (Sandbox Code Playgroud)
请注意,角色是PostgreSQL 维护数据库权限的方式.如果postgres用户没有角色,则它无法访问任何内容.createuser命令是围绕命令CREATE USER,CREATE ROLE等的瘦包装器.
Pre*_*rem 26
最近我在安装postgres后立即遇到了这个问题.如果它在安装后立即出现,则可能缺少默认用户postgres.在这种情况下,您可以使用以下命令创建默认用户postgres.
createuser -s -U $ USER
Ex: createuser -s -U $USER
enter your required role name: postgres
enter password for your the user:
Run Code Online (Sandbox Code Playgroud)
它将提示您输入所需的数据库角色名称和密码完成此过程后,您可以使用以下命令登录postgres控制台
psql -U 'your_database_name'
Run Code Online (Sandbox Code Playgroud)
例如:psql -U postgres
这里,如果您在创建用户时已经提供了密码,则需要输入密码.
希望能帮助到你 :)
Jac*_*ack 22
I was on OSX 10.8, and everything I tried would give me the FATAL: role "USER" does not exist. Like many people said here, run createuser -s USER, but that gave me the same error. This finally worked for me:
$ sudo su
# su postgres
# createuser -s --username=postgres MYUSERNAME
Run Code Online (Sandbox Code Playgroud)
The createuser -s --username=postgres creates a superuser (-s flag) by connecting as postgres (--username=postgres flag).
I see that your question has been answered, but I want to add this answer in for people using OSX trying to install PostgreSQL 9.2.4.
sov*_*ndy 10
我第一次安装Heroku的POSTGRES.app时遇到了这个问题.经过一个早上的试验和错误,我认为这一行代码解决了问题.如前所述,这是因为postgresql在第一次设置时没有默认角色.我们需要设定它.
sovanlandy=# CREATE ROLE postgres LOGIN;
Run Code Online (Sandbox Code Playgroud)
您必须登录到各自的psql控制台才能使用此psql命令.
另请注意,如果您已经创建了角色'postgre'但仍然获得权限错误,则需要使用命令进行更改:
sovanlandy=# ALTER ROLE postgres LOGIN;
Run Code Online (Sandbox Code Playgroud)
希望能帮助到你!
小智 5
在 Heroku 文档中;他们说,从 Rails 4 开始:
\n\n\n\n\n您还需要删除 database.yml\n 中的用户名字段(如果有):在文件 config/database.yml 中删除: username:\n myapp
\n
然后,如果您不 pg 告诉在角色“myapp”下工作的数据库,则只需删除“development:”中的该行
\n\n\n\n\n此行告诉 Rails 数据库 myapp_development 应该在 myapp 角色下运行。由于您的数据库中可能没有\xe2\x80\x99\n 此角色,因此我们将删除它。通过行remove,Rails 将尝试以当前登录计算机的用户身份访问数据库。
\n
还记得创建用于开发的数据库:
\n\n$createdb myapp_development\nRun Code Online (Sandbox Code Playgroud)\n\n将“myapp”替换为您的应用程序名称
\n