OS X上的Postgres有什么用?

时间:2013-09-02 21:27:25

标签: macos postgresql osx-mountain-lion

我的目标是拥有一个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需要做些什么?

1 个答案:

答案 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迁移将填充

我希望: - )