OS X上的Postgres有什么用?

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?

Mit*_*tch 7

有很多方法可以达到你想要的程度,但这应该有效:

首先 - 删除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迁移将填充

我希望 :-)