Mos*_*she 2 postgresql macos osx-mountain-lion
我的目标是有一个Postgres设置,我可以使用它来开发我的rails应用程序,然后将其推送到Heroku而无需更改数据库配置文件.看起来很简单吧?
我在互联网上看到很多关于PostgreSQL 9.2.x没有在OS X 10.8上运行的东西,我仍然在努力让它与Rails一起工作.没有意识到OS X附带的PSQL版本,我开始安装它.(注意:我在圈子里进行调试,所以事情可能没有按照我的预期发挥作用.)
我尝试使用此处列出的官方图形安装程序下载和安装,然后重新启动了我的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"?`
Run Code Online (Sandbox Code Playgroud)
然后我继续用自制软件安装Postgres.我安装了自制软件,然后安装了postgres.一样.我google了一下,在Postgres论坛上遇到了一个帖子.我从中得到的是OS X 10.7和10.8之间的某些变化,但这不是我的问题的原因.
接下来,我尝试使用自包含的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
Run Code Online (Sandbox Code Playgroud)
Rails说数据库不存在.
我需要做些什么才能让Postgres在Mac OS X 10.8.4 Mountain Lion上使用Rails 3.2.6?
有很多方法可以达到你想要的程度,但这应该有效:
首先 - 删除PostgreSql的任何现有副本,如下所示:
brew update
brew uninstall postgresql
Run Code Online (Sandbox Code Playgroud)
(假设没有使用brew更新的probs)
我发现这删除了osx 10.8附带的实例
如果您仍然使用Postgres应用程序,请将其拖出"应用程序"并进入"废纸篓"
我会重新启动,只是为了它的地狱...(我的旧Windows体验:-)
然后安装最新的postgres(或者你可以在这里指定一个版本)
brew install postgres
Run Code Online (Sandbox Code Playgroud)
如果它引发了与ossd-uuid相关的错误,那么就做一个
brew uninstall ossd-uuid && brew install ossd-uuid
Run Code Online (Sandbox Code Playgroud)
那应该清除它
自制软件列出了一些有用的命令,例如设置postgres以在启动时启动等
创建一个初始postgres db by
initdb /usr/local/var/postgres -E utf8
Run Code Online (Sandbox Code Playgroud)
开始postgres
postgres -D /usr/local/var/postgres
Run Code Online (Sandbox Code Playgroud)
现在在终端提示符下键入
psql postgres
Run Code Online (Sandbox Code Playgroud)
使用你的Mac管理员密码,你应该得到一个提示(\ q退出):
postgres=#
Run Code Online (Sandbox Code Playgroud)
将创建具有您的用户名的用户(但是,从内存中,而不是密码),所以立即设置
postgres=# alter user your-name with password 'anything';
Run Code Online (Sandbox Code Playgroud)
如果成功,它将以ALTER ROLE返回(如果没有,则返回提示)
然后,如果你的Rails数据库是例如dev_db,你可以为此创建一个用户:
postgres=# create role your_user with login createdb createrole password 'your_pass';
Run Code Online (Sandbox Code Playgroud)
your_user和your_pass将出现在你的rails database.yaml文件中(不确定是否createdb和createrole需要在那里,但那就是我所做的)
最后,您的database.yaml需要具有如下开发:
development:
adapter: postgresql
encoding: unicode
database: dev_db
pool: 5
timeout: 5000
host: localhost
username: your_user
password: your_pass
Run Code Online (Sandbox Code Playgroud)
然后
rake db:create
Run Code Online (Sandbox Code Playgroud)
这应该创建一个空的数据库,您的Rails迁移将填充
我希望 :-)
| 归档时间: |
|
| 查看次数: |
2069 次 |
| 最近记录: |