重新启动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上预装的版本。4]是我通过Homebrew安装的版本。
如前所述,这在重新启动之前是可以工作的,因此它实际上不可能是编译问题。我还重新运行了initdb /usr/local/var/postgres -E utf8,文件仍然存在。
当我试图用postgres11挂载卷启动Postgres12时,就发生了这种情况。只要删除postgres11的挂载卷并重新启动就可以了。
之前我用的是:
docker run -d --name my_database -v /Users/champ/postgres:/var/lib/postgresql/data -p 54320:5432 postgres:11
我删除了/Users/champ/postgres并重新启动postgres 12,使用
docker run -d --name my_database -v /Users/champ/postgres:/var/lib/postgresql/data -p 54320:5432 postgres:12
类似于这些答案(1,2),我的Postgres数据库文件在升级到postgresql 13.3后与我的Postgres版本不兼容。
不幸的是,升级Postgres数据目录失败了。
$ brew postgresql-upgrade-database
...
Setting next OID for new cluster
*failure*
Consult the last few lines of "pg_upgrade_utility.log" for
the probable cause of the failure.
Failure, exiting
Error: Upgrading postgresql data from 12 to 13 failed!
==> Removing empty postgresql initdb database...
==> Moving postgresql data back from /usr/local/var/postgres.old to /usr/local/var/postgres...
Error: Failure while executing; `/usr/local/opt/postgresql/bin/pg_upgrade -r -b /usr/local/Cellar/postgresql@12/12.7/bin -B /usr/local/opt/postgresql/bin -d /usr/local/var/postgres.old -D /usr/local/var/postgres -j 8` exited with 1.
我的解决办法是重新安装postgresql 12.7。
$ brew reinstall postgresql@12
$ brew services start postgresql@12