2016-08-18 87 views
1

我设置了Postgresql以便与Rails应用程序一起使用,但我似乎无法连接到或正确配置数据库(启动Rails服务器后出现的错误是:ActiveRecord::NoDatabaseErrorcould not translate host name "MyProfile" to address: nodename nor servname provided, or not known)。Postgresql角色不存在

我从其他几十个关于此主题的问题中收集了一些我需要切换到的内容,或者创建“MyComputer”角色,但我注意到他们都需要使用psql命令。当我跑步时,即使只是psql我也是,得到错误FATAL: role "MyProfile" does not exist

到目前为止,我一直在关注Heroku的INSTAL过程,我坚持here(或者更准确地说here,安装,在Heroku上说,运行psql -h localhost应该工作之后)。我错过了一个明显的步骤/做错了什么?

我也试过:中sudo -u postgres createuser owning_user



sudo su - MyProfile
变化和其他几个命令,努力创建此卷/用户,但我似乎无法得到完成我需要解决问题。

编辑
我也跑ps aux | grep postgres,它看起来像所有与任何Postgres的相关的PID的是在“我的资料”运行(假设我读它的权利)。但psql命令仍然返回该角色不存在。 #sadface

EDIT 2
我刚打开Postgres的应用程序,并单击 “打开PSQL” 按钮。它打开终端,运行命令('/Applications/Postgres.app/Contents/Versions/9.5/bin'/psql -p5432),然后给我同样的错误(psql: FATAL: role "MyProfile" does not exist)。这或许暗示了这是一个系统问题,而不是Rails问题呢?

编辑3
这肯定是一个PG的问题,而不是一个轨道的问题。我刚刚卸载了应用程序,使用SQLite(yucks)重新安装了它,运行本地服务器并使测试着陆页显示出来。所以问题似乎与我的本地机器,而不是应用程序本身。删除了RoR标签,并且仍在寻找Postgres专家为何角色问题仍然存在的答案:)

回答

0

什么烂摊子......我忘记提到的一件事可能会对社区有天文上的帮助,因为我正在接管别人的机器。有一些挥之不去的设置只是决定他们不会打得好。

在一天结束的时候,我摆脱Postgress.app的,安装了自制的Postgres,和我需要的平衡在这里:http://exponential.io/blog/2015/02/21/install-postgresql-on-mac-os-x-via-brew/

具体救了我是createdb 'whoami'(行见实际的帖子...语法有点不同,因为我刚刚写的因为stackoverflow格式)...回想起来似乎很明显,但它帮助我当前登录的用户克服其他旧用户的预设创建整个设置所需要的数据库。

经验教训!

感谢@max的帮助,帮助我避免了另一个我将要面对的问题!

0

如果您使用的是Postgres.app,则应该从config/database.yml中删除用户名和密码。此外,该错误告诉您,您输入的MyProfile不是作为用户(或角色的PG说法),而是作为数据库连接的主机(而不是localhost)。

这确实是你在你的config/database.yml需要得到Postgres.app运行:

default: &default 
    adapter: postgresql 
    encoding: unicode 
    # For details on connection pooling, see rails configuration guide 
    # http://guides.rubyonrails.org/configuring.html#database-pooling 
    pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %> 

development: 
    <<: *default 
    database: myapp_development 

test: 
    <<: *default 
    database: myapp_test 

它往往是一个好主意,把它剥离下来,让谁绝对有可能对自己开发的Postgres密码的傻瓜服务器使用DATABASE_URL env var

+0

感谢@max的想法。我生成Rails应用程序指定PG数据库,这样用户名和密码被列入地方只有在生产环境: '生产: <<:*默认 数据库:myapp_com_production 用户名:myapp_com 密码:<% = ENV ['MYAPP_COM_DATABASE_PASSWORD']%>' (我还需要吗?)。 否则我的代码与上面提到的完全相同。 – DanielNordby