【问题标题】:What's with Postgres on OS X?OS X 上的 Postgres 有什么用?
【发布时间】:2013-09-06 00:29:20
【问题描述】:

我的目标是拥有一个 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。一样。我用谷歌搜索了一下,然后在 Postgres 论坛上遇到了一个帖子。我从中得到的是 OS X 10.7 和 10.8 之间发生了一些变化,但这不是我的问题的原因。

接下来,我尝试使用self-contained the Postgres.app。现在,我能够创建用户并连接到数据库。 Rails 能够连接到 Postgres,但抱怨我在 config.yaml 中定义的数据库不存在。所以我创造了它——至少我是这么认为的。

在“自包含”版本的 PSQL 中运行 CREATE DATABASE my_db 不起作用 - 即使没有自包含应用程序,PSQL 也会出现该套接字错误。然后我尝试创建一个具有写访问权限的新用户。没有。 CREATE 默默地失败了。

我尝试将 localhost 添加到我的环境变量中,它似乎已经解决了端口错误 - 但现在 Rails 再次无法找到 Postgres。

我卸载了 brew 版本。我删除了企业工具等。仍然没有运气。重启。仍然没有运气。

我刚刚卸载了 brew,我的配置如下所示:

development:
  adapter: postgresql
  database: my_db
  pool: 5
  timeout: 5000
  host: localhost
  port: 5432

Rails 说数据库不存在。

我需要做什么才能让 Postgres 在 Mac OS X 10.8.4 Mountain Lion 上与 Rails 3.2.6 一起工作?

【问题讨论】:

  • 我真的希望有人找到负责他们的 PostgreSQL 内置默认安装的 Apple 人员并对他们大喊大叫,直到他们停止将其放在默认端口 (5432) 上并停止将他们的 libpq 副本和psql 在路径上。它给 Mac 用户带来了如此多的混乱。也就是说,您在这里创建了许多自己的问题,例如“我看到创建了一个额外的用户帐户,我立即删除了它”和“这不起作用,我将尝试另一个没有卸载前一个”的方法。
  • 当你说“Rails 说数据库不存在”时,你能说得更具体些吗? 请提供确切的错误消息

标签: macos postgresql osx-mountain-lion


【解决方案1】:

有很多方法可以达到您想要的目的,但这应该可行:

首先 - 删除任何现有的 PostgreSql 副本,如下所示:

brew update
brew uninstall postgresql

(假设 brew 更新没有问题)

我发现这删除了 ​​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 文件中(不确定 createdb 和 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 迁移将填充该数据库

我希望:-)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-09-07
    • 2012-06-03
    • 2019-06-08
    • 2013-11-15
    • 1970-01-01
    • 1970-01-01
    • 2016-09-21
    相关资源
    最近更新 更多