2013-03-01 62 views
3

我在安装postgresql-9.1的同时尝试学习Rails。我没有任何与它的麻烦的时候,但我只是打开了我的Console.app解决别的东西,我看到下面的错误每隔10秒重复:postgresql每10秒在控制台中出现错误

3/1/13 10:28:15 AM com.edb.launchd.postgresql-9.1[89003] 2013-03-01 15:28:15 GMT FATAL: data directory "/Library/PostgreSQL/9.1/data" has wrong ownership 
3/1/13 10:28:15 AM com.edb.launchd.postgresql-9.1[89003] 2013-03-01 15:28:15 GMT HINT: The server must be started by the user that owns the data directory. 
3/1/13 10:28:15 AM com.apple.launchd[1] (com.edb.launchd.postgresql-9.1[89003]) Exited with exit code: 1 
3/1/13 10:28:15 AM com.apple.launchd[1] (com.edb.launchd.postgresql-9.1) Throttling respawn: Will start in 10 seconds 

我怎么能阻止它?

+4

看起来很明显:更改指定目录的所有权,或更改服务器运行的ID。 – 2013-03-01 21:07:43

+0

我试过了:'sudo chown thingevery/Library/PostgreSQL/9.1/data'但是得到了:'不允许操作'我提到我对postgresql(以及一般的数据库)真的很陌生吗? – thingEvery 2013-03-01 21:35:27

回答

2

看起来你已经安装了EnterpriseDB的PostgreSQL包,但是你不能使用它,因为服务器无法启动。我推测你正在使用Postgres.app或Homebrew Postgres等其他PostgreSQL服务器来开发你的工作?

如果是这样,请考虑只卸载未使用的EnterpriseDB PostgreSQL包。或者,您可以删除其启动的配置文件,以便启动时不尝试启动它,但这可能会在以后造成更多混淆。

如果你想使用它,你需要修复权限。 “启动服务器的用户”不会是您的用户名,它将是名为postgrespostgres_(在某些Mac系统上)的用户。你可以通过阅读EDB PostgreSQL的launchd文件来找出它。然后,你需要:

sudo chown -R postgres /Library/PostgreSQL/9.1/data 

(或postgres_取决于期望的内容的launchd)。

如果您正在运行另一个PostgreSQL服务器,这可能会允许EDB服务器尝试启动,但它会与其他PostgreSQL使用的端口号冲突,因此它仍然会失败。或者它可能在您的计算机下次启动时成功启动,您将无法再访问其他PostgreSQL实例。所以如果你已经使用了另一个版本的PostgreSQL,你应该只是卸载这个。

+0

非常感谢您的回答!除了通过Homebrew安装的postgres之外,我还安装了一个名为pgAdmin3的应用程序。我怀疑这是问题,今天下午将它从我的系统中删除。但是,直到我刚刚重新启动之前,它并没有阻止错误。 – thingEvery 2013-03-02 04:00:26

2

当我使用homebrew更新我的PostgreSQL到9.3版时,我遇到了同样的问题。我开始搜索解决互联网上的问题,但不幸的是,它没有成功。所以我决定自己研究这个问题。我发现postgres试图从2个地方开始:/System/Library/LaunchDaemons/~/Library/LaunchAgents。只要删除旧的或禁用它(放置在/System/Library/LaunchDaemons/)就是这样。

相关问题