我的目标是拥有一个Postgres设置,我可以使用它来开发我的rails应用程序,然后将其推送到Heroku而无需更改数据库配置文件。看起来很简单,对吧?
我在互联网上看到很多关于PostgreSQL 9.2.x没有在OS X 10.8上运行的东西,我仍然在努力让它与Rails一起工作。没有意识到OS X附带的PSQL版本,我开始安装它。 (注意:我在圈子里进行调试,所以事情可能没有按照我的预期发挥作用。)
我尝试使用the official graphical installer listed here下载和安装,然后重新启动了我的Mac。我看到创建了一个额外的用户帐户,我立即删除了它。 (我知道,我知道,可能是什么引起了一些心痛,但是有一个额外的用户帐户坐在那里似乎没有道理。)
运行我的rails应用程序后,它无法连接到postgres。我试过从终端运行psql。
psql: could not connect to server: No such file or directory
Is the server running locally and accepting
connections on Unix domain socket "/var/pgsql_socket/.s.PGSQL.5432"?`
然后我继续用自制软件安装Postgres。我安装了自制软件,然后安装了postgres。一样。我google了一下,在Postgres论坛上遇到了一个帖子。我从中得到的是OS X 10.7和10.8之间的某些变化,但这不是我问题的原因。
接下来,我尝试使用self-contained the Postgres.app。现在,我能够创建用户并连接到数据库。 Rails能够连接到Postgres,但抱怨我在config.yaml
中定义的数据库不存在。所以我创造了它 - 或者我想。
在"自包含"中运行CREATE DATABASE my_db
PSQL版本没有工作 - 即使没有自包含应用程序,PSQL也会出现套接字错误。然后我尝试创建一个具有写访问权限的新用户。不。 CREATE
默默地失败了。
我尝试将localhost添加到我的环境变量中,它似乎解决了端口错误 - 但是现在Rails再次找不到Postgres了。
我卸载了brew版本。我删除了企业工具等。仍然没有运气。重启。仍然没有运气。
我刚刚卸载了brew,我的配置如下所示:
development:
adapter: postgresql
database: my_db
pool: 5
timeout: 5000
host: localhost
port: 5432
Rails说数据库不存在。
在Mac OS X 10.8.4 Mountain Lion上使Postgres使用Rails 3.2.6需要做些什么?
答案 0 :(得分:7)
有很多方法可以达到你想要的程度,但这应该有效:
首先 - 删除任何现有的PostgreSql副本,如下所示:
brew update
brew uninstall postgresql
(假设没有使用brew更新的probs)
我发现这删除了osx 10.8附带的实例
如果您仍有Postgres应用程序,请将其拖出“应用程序”并进入“废纸篓”
然后我会重新启动,只是为了它的地狱...(我的旧Windows体验: - )
然后安装最新的postgres(或者你可以在这里指定一个版本)
brew install postgres
如果它引发了与ossd-uuid相关的错误,那么就做一个
brew uninstall ossd-uuid && brew install ossd-uuid
那应该清除它
自制软件列出了一些有用的命令,例如设置postgres以在启动时启动等
通过
创建一个初始postgres数据库initdb /usr/local/var/postgres -E utf8
开始postgres
postgres -D /usr/local/var/postgres
现在在您的终端提示符下,键入
psql postgres
使用您的Mac管理员密码,您应该得到提示(\ q退出):
postgres=#
用户名已经创建(但是,从内存中,而不是密码),所以现在设置
postgres=# alter user your-name with password 'anything';
如果成功,它将返回ALTER ROLE(如果没有,则返回提示)
然后,如果您的Rails数据库是例如dev_db,则可以为此创建用户:
postgres=# create role your_user with login createdb createrole password 'your_pass';
your_user和your_pass将出现在你的rails database.yaml文件中(不确定是否创建了b& createrole需要在那里,但这就是我的所作所为)
最后,您的database.yaml需要具有以下开发:
development:
adapter: postgresql
encoding: unicode
database: dev_db
pool: 5
timeout: 5000
host: localhost
username: your_user
password: your_pass
然后
rake db:create
这应该会创建一个空的数据库,您的Rails迁移将填充
我希望: - )