最近升级到OSX Mavericks已经破坏了我的Rails应用程序的数据库连接。
当我尝试从数据库中提取时,服务器返回以下错误:
PG::ConnectionBad (could not connect to server: Connection refused
Is the server running on host "localhost" (::1) and accepting
TCP/IP connections on port 5432?
could not connect to server: Connection refused
Is the server running on host "localhost" (127.0.0.1) and accepting
TCP/IP connections on port 5432?
could not connect to server: Connection refused
Is the server running on host "localhost" (fe80::1) and accepting
TCP/IP connections on port 5432?
尝试运行psql
时,我得到:
psql: could not connect to server: No such file or directory
Is the server running locally and accepting
connections on Unix domain socket "/tmp/.s.PGSQL.5432"?
我尝试过互联网上提供的许多解决方案。这样重新安装pg gem并在我的database.yml中设置host:localhost。我的/usr/local/var/postgres/pg_hba.conf文件说:
# 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
psql返回:/usr/local/bin/psql
这个问题有什么解决方案吗?一些解决方案建议我需要将我的$ PATH更改为我以前的postgres安装,因为新版本的postgres将与Mavericks一起添加。我如何找到它的位置?它很可能是用自制软件安装的,但我不确定。
答案 0 :(得分:23)
如果您通过自制软件安装,请尝试此操作(来自brew info postgresql
)
launchctl unload ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist
launchctl load ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist
将重新加载它。 Postgress.app我的默认设置将找不到你的数据库(你需要将它指向PGDATA
目录,你可能会遇到版本冲突(如果你运行9.2和postgress.app是9.3,转储/恢复)会有秩序的。
从评论中拉出来。
好吧所以看起来你安装了9.2.3,我会做的就是这个。
postgres -D /usr/local/var/postgres
然后把它们全部拿回来。 pg_dumpall > ~/mydatabases.dump
杀死postgres
brew reinstall postgresql
,但警告这会将您从9.2.3
带到9.3.1
。然后重新导入所有数据库psql < mydatabaes.dump
。确保遵循卸载/加载启动项目的指示,此时你应该是好的。您还可以查看使用postgress.app并将数据库导入该应用程序,但无论如何您都需要备份/转储数据库。
答案 1 :(得分:6)
tl; dr刚启动Postgres应用程序!
FWIW,我在小牛队升级之后和之后获得了完全相同的经历:
一切正常!
然后我意识到了
答案 2 :(得分:6)
有同样的问题。发现升级很难杀死进程并将postgres pid文件留在那里。所以,不要像我这样的dumbazz并点击重启来升级你的OSX。确保在升级之前干净地关闭所有内容。
答案 3 :(得分:5)
最简单的解决方案是使用正常工作的http://postgresapp.com
要通过自制软件安装,请确保brew update
让自制软件再次运行
答案 4 :(得分:4)
尝试按照here所述的.bash_profile添加此内容:
export PGHOST=localhost
答案 5 :(得分:2)
当我升级到10.9.4
时,我最近遇到了这个问题经过一天的反复试验,我发现Joho的这篇文章解决了我的问题:https://gist.github.com/joho/3735740
确保更改版本以符合您的安装版本。如果您安装了多个版本,可以通过访问cd / usr / local / Cellar / postgresql查看哪些版本然后执行以下步骤,但更改版本号以匹配您的安装。
摘要:
$ launchctl unload -w ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist
$ mv /usr/local/var/postgres /usr/local/var/postgres9.2
$ brew update
$ brew upgrade postgresql
$ initdb /usr/local/var/postgres -E utf8
$ pg_upgrade -b /usr/local/Cellar/postgresql/9.2.1/bin -B /usr/local/Cellar/postgresql/9.3.4/bin -d /usr/local/var/postgres9.2 -D /usr/local/var/postgres
$ cp /usr/local/Cellar/postgresql/9.3.4/homebrew.mxcl.postgresql.plist ~/Library/LaunchAgents/
$ pg_ctl -D /usr/local/var/postgres -l /usr/local/var/postgres/server.log start
如果您正在使用ruby,请:
$ gem pristine pg
我希望这有帮助!它为我做了
答案 6 :(得分:1)
如果你通过.dmg安装,你可以从Postgres安装程序重新安装(在我的情况下是postgresql-9.1.3-1-osx.dmg)。也可能需要重启。我昨天做了这个 - 我的实际数据库没有被删除,现在一切都很好。
从Snow Leopard到Mountain Lion也发生了类似的事情:
答案 7 :(得分:0)
如果使用Homebrew升级,问题可能是数据库格式。通过直接运行postgres命令来检查它:
$ postgres
FATAL: database files are incompatible with server
DETAIL: The data directory was initialized by PostgreSQL version 9.2, which is not compatible with this version 9.3.4.
由于我的开发数据库都是种子数据,我只是将它们吹走了。
$ rm -rf /usr/local/var/postgres
$ initdb
当然,由于这会杀死所有内容,因此您需要在rake db:create成功之前重新创建角色。
$ createuser -s MyApp
如果您不知道角色名称,只需运行rake db:create。它会告诉你。
答案 8 :(得分:0)
使用PostgreSQL
homebrew
安装OS X Mavericks
后,这对我有用:
sudo ARCHFLAGS="-arch x86_64" gem install pg
如果情况并非如此,那么在将操作系统升级到OS X Yosemite
和OS X El Capitan
sudo PATH=$PATH:/Applications/Postgres.app/Contents/Versions/[Version-Number]/bin gem install pg -v [gem version]
此外,请确保您已为Xcode
更新了command line tools
和Xcode
。
答案 9 :(得分:0)
如果您在从Yosemite升级后找到此页面,则需要采用不同的方法来解决问题。基本上升级到Yosemite会破坏一些文件。您可以找到问题和解决方案here!。