Postgres – FATAL:数据库文件与服务器不兼容

我正在用PostgreSQL开发一个Rails4-App,它一切正常。 重新启动我的MacBook Pro后,我无法启动数据库服务器:

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"? 

我检查了日志,下面的行一遍又一遍地出现:

 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.0.4. 

9.0.4是预装在Mac上的版本,9.2 [.4]是我通过Homebrew安装的版本。 如前所述,这用于在重启之前工作,所以它实际上不是一个编译问题。 我也重新运行initdb /usr/local/var/postgres -E utf8文件仍然存在。

不幸的是,我对Postgres很新,所以任何帮助将非常感激。

如果您正在查找核选项(删除所有数据并获取新数据库),则可以执行以下操作:

rm -rf /usr/local/var/postgres && initdb /usr/local/var/postgres -E utf8

然后你需要rake db:setuprake db:migrate从你的Rails应用程序rake db:migrate到安装。

试试这个: https : //gist.github.com/joho/3735740

它对我来说是完美的。 最后还会生成2个bash脚本来检查数据库并删除旧的群集。 非常棒。

请参阅: http : //www.postgresql.org/docs/9.2/static/pgupgrade.html以了解更多。

在互联网上发现,这个解决scheme适合我。

当我升级到OS X 10.10 Yosemite后,试图启动postgresql服务器时,遇到了下一个问题:

pg_ctl -D / usr / local / var / postgres -l /usr/local/var/postgres/server.log start

无法连接到服务器:没有这样的文件或目录服务器是否在本地运行,并接受Unix域套接字“/var/pgsql_socket/.s.PGSQL.5432”上的连接? 好的,让我们看看服务器日志:

$ cat /usr/local/var/postgres/server.log

致命错误:数据库文件与服务器不兼容详细信息:数据目录由PostgreSQL 9.2版本初始化,与9.3.5版本不兼容。 所以,升级postgresql后我们需要按照以下步骤操作:

1 $ launchctl unload -w〜/ Library / LaunchAgents / homebrew.mxcl.postgresql.plist

2 $ mv / usr / local / var / postgres / usr / local / var / postgres92

3 $ brew更新

4 $ brew升级postgresql

5 $ initdb / usr / local / var / postgres -E utf8

6 $ pg_upgrade -b /usr/local/Cellar/postgresql/9.2.3/bin -B /usr/local/Cellar/postgresql/9.3.5_1/bin -d / usr / local / var / postgres92 -D / usr /本地的/ var / Postgres的

7 $ cp /usr/local/Cellar/postgresql/9.3.5_1/homebrew.mxcl.postgresql.plist〜/ Library / LaunchAgents /

8 $ pg_ctl -D / usr / local / var / postgres -l /usr/local/var/postgres/server.log start

9 $ rm -rf / usr / local / var / postgres92

而已。