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:setup
和rake 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
而已。