在升级到OSX Mavericks后修复PostgreSQL。
在升级到OSX Mavericks后修复PostgreSQL。
我最近将OSX Mavericks升级后,我的Rails应用的数据库连接出现了问题。\n当我尝试从数据库中获取数据时,服务器返回以下错误:\n
PG::ConnectionBad (无法连接到服务器:拒绝连接 服务器是否在主机“localhost”(::1)上运行 并接受端口5432上的TCP/IP连接? 无法连接到服务器:拒绝连接 服务器是否在主机“localhost”(127.0.0.1)上运行 并接受端口5432上的TCP/IP连接? 无法连接到服务器:拒绝连接 服务器是否在主机“localhost”(fe80::1)上运行 并接受端口5432上的TCP/IP连接?
\n当尝试运行psql
时,我收到以下错误:\n
psql:无法连接到服务器:没有该文件或目录 服务器是否在本地运行并接受 Unix域套接字“/tmp/.s.PGSQL.5432”上的连接?
\n
\n我尝试了许多在互联网上找到的解决方法,如重新安装pg gem并在我的database.yml中设置host: localhost。我的/usr/local/var/postgres/pg_hba.conf文件如下:\n
# TYPE DATABASE USER ADDRESS METHOD # "local" is for Unix domain socket connections only local all all trust # IPv4 local connections: host all all 127.0.0.1/32 trust # IPv6 local connections: host all all ::1/128 trust # Allow replication connections from localhost, by a user with the # replication privilege. #local replication RyanKing trust #host replication RyanKing 127.0.0.1/32 trust #host replication RyanKing ::1/128 trust
\npsql命令返回:/usr/local/bin/psql
\n
\n有关此问题的解决方案吗?一些解决方案建议我需要将$PATH更改为我的先前postgres安装位置,因为Mavericks会添加一个新版本的postgres。我如何找到它的位置?它很可能是通过homebrew安装的,但我不确定。
问题原因:在升级到OSX Mavericks之后,PostgreSQL应用程序没有被启动。
解决方法:启动PostgreSQL应用程序。
具体步骤:
1. 安装并启动9.3版本的PostgreSQL(在我的应用程序文件夹中显示为Postgres93)。
2. 将9.2版本的PostgreSQL移动到垃圾箱。
3. 由于数据库没有迁移,Rails出现错误,于是我回退了操作。
4. 退出9.3版本的PostgreSQL。
5. 从垃圾箱中恢复9.2版本的PostgreSQL。
6. 启动9.2版本的PostgreSQL。
7. 问题解决。
我随后意识到:
1. 问题是由于OSX Mavericks安装后并没有运行PostgreSQL引起的。
2. 在此之前,我从未采取过任何明确的操作来使PostgreSQL在启动时运行,但是...
3. Mac OS在重新启动后会自动重新启动先前运行的PostgreSQL。
问题出现的原因:
在升级到OSX Mavericks后,PostgreSQL出现了问题。可能是因为之前安装的版本与新的操作系统不兼容,或者是因为数据库文件路径发生了变化。
解决方法:
1. 如果是通过homebrew安装的,可以尝试以下操作:
- 执行命令brew info postgresql
,获取PostgreSQL的信息;
- 执行命令launchctl unload ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist
,卸载旧的PostgreSQL服务;
- 执行命令launchctl load ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist
,重新加载PostgreSQL服务。
2. 如果使用的是Postgress.app,默认情况下无法找到数据库。可以尝试以下操作:
- 手动指定PGDATA
目录,将其指向数据库文件所在的目录;
- 如果之前使用的是9.2版本,而Postgress.app是9.3版本,可能会出现版本冲突。可以通过备份和恢复数据库的方式解决。
3. 如果之前安装的是9.2.3版本,可以尝试以下操作:
- 执行命令postgres -D /usr/local/var/postgres
,启动9.2.3版本的PostgreSQL服务;
- 执行命令pg_dumpall > ~/mydatabases.dump
,备份所有数据库;
- 关闭PostgreSQL服务;
- 执行命令brew reinstall postgresql
,重新安装PostgreSQL(版本从9.2.3升级到9.3.1);
- 执行命令psql < mydatabaes.dump
,导入之前备份的数据库。
4. 如果以上方法无效,可以尝试使用Postgress.app,并将数据库导入该应用程序中。
这样做之后,应该能够修复PostgreSQL在升级到OSX Mavericks后出现的问题。