PostgreSQL 初始化版本 12 与 11.14 不兼容

Posted

技术标签:

【中文标题】PostgreSQL 初始化版本 12 与 11.14 不兼容【英文标题】:PostgreSQL initialized version 12 incompatible with 11.14 【发布时间】:2022-01-10 13:11:53 【问题描述】:

我在 OSX 10.12、Rails 6.0.4、gem 'pg', '>= 0.18', '< 2.0' 并且最近注意到各种应用程序上的 postgresql 存在问题,这些问题仍然冻结了一段时间。

来自 Github/Le Wagon 的 Rails 模板甚至无法迁移:

rails db:migrate
rails aborted!
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?

所以我愿意

postgres -D /usr/local/var/postgres

2021-12-04 15:14:57.335 CET [1964] FATAL:  database files are incompatible with server
2021-12-04 15:14:57.335 CET [1964] DETAIL:  The data directory was initialized by PostgreSQL version 12, which is not compatible with this version 11.14.

我刚刚升级了,最后说:

Warning: postgresql@12 12.9_1 is already installed and up-to-date.
To reinstall 12.9_1, run:
  brew reinstall postgresql@12
➜  background-jobs-demo git:(master) ✗ postgres -V
postgres (PostgreSQL) 11.14

根据@AdrianKlaver 的评论,我还发现了一个包含 postgresql@11 和 postgresql@12 的存储库

最好的做法是什么?升级版本 12 ? brew postgresql-upgrade-database 会保证我升级版本 12,而不是 13 或 14 吗?

【问题讨论】:

看起来已经有一个 Postgres 12 实例并且它创建/填充了目录/usr/local/var/postgres。唯一可能发生的其他方式是,如果有人从其他地方复制了 Postgres 12 数据目录。您需要确定是否安装了多个 Postgres,如果其中之一是 12,然后将正确的一个指向目录。 @AdrianKlaver 我刚刚进行了升级,最后说:警告:postgresql@12 12.9_1 已经安装并且是最新的。要重新安装 12.9_1,请运行: brew reinstall postgresql@12 ➜ background-jobs-demo git:(master) ✗ postgres -V postgres (PostgreSQL) 11.14 所以我正在重新安装,希望它能解决。 所以正如我所提到的,安装了多个 Postgres 实例,至少 11 和 12。您需要找到它们的位置并将正确的二进制文件与正确的数据目录匹配。 不,你最终会回到现在的位置。阅读此Homebrew Postgres 和此Homebrew multiple versions。 阅读我发送的链接,他们会告诉你如何操作。我不使用 MacOS,因此无法创建测试设置来创建有效答案。 【参考方案1】:

我去了正规,但出了点问题,我无法完成。 感谢@AdrianKlaver cmets(由于存在不同的postgresql版本而出现问题)和链接:running multiple pstgresql simultaneously和install homebrew-commons package。

    检查并卸载当前的 postgresql: 安装 homebrew commons 和 postgres 版本 创建服务器端 但是服务器无法启动

出了什么问题?

1.    
brew list |grep postgr
brew uninstall postgresql@11
brew uninstall postgresql@12
2.
brew install petere/postgresql/postgresql-common
brew install petere/postgresql/postgresql@12
3.
pg_createcluster 12 main
pg_ctlcluster 12 main start
    
Error: /usr/local/opt/postgresql@12/bin/pg_ctl /usr/local/opt/postgresql@12/bin/pg_ctl start -D /usr/local/var/lib/postgresql/12/main -l /usr/local/var/log/postgresql/postgresql-12-main.log -s -o  -c config_file="/usr/local/etc/postgresql/12/main/postgresql.conf" -c external_pid_file="/usr/local/var/run/postgresql/12-main.pid"  exited with status 1: 
    2021-12-04 22:44:50.632 CET [76694] LOG:  starting PostgreSQL 12.9 (Homebrew petere/postgresql) on x86_64-apple-darwin16.7.0, compiled by Apple LLVM version 9.0.0 (clang-900.0.39.2), 64-bit
    2021-12-04 22:44:50.636 CET [76694] LOG:  listening on IPv6 address "::1", port 5432
    2021-12-04 22:44:50.636 CET [76694] LOG:  listening on IPv4 address "127.0.0.1", port 5432
    2021-12-04 22:44:50.638 CET [76694] LOG:  listening on Unix socket "/tmp/.s.PGSQL.5432"
    2021-12-04 22:44:50.651 CET [76694] FATAL:  postmaster became multithreaded during startup
    2021-12-04 22:44:50.651 CET [76694] HINT:  Set the LC_ALL environment variable to a valid locale.
    2021-12-04 22:44:50.652 CET [76694] LOG:  database system is shut down
    pg_ctl: could not start server
    Examine the log output.

【讨论】:

这不是一个答案,而是另一个问题。将其复制并粘贴为新问题,并带有指向上述问题的链接。然后删除这个“答案”。 @AdrianKlaver 绝对是,当我看到你的评论时,我正在编辑新答案。

以上是关于PostgreSQL 初始化版本 12 与 11.14 不兼容的主要内容,如果未能解决你的问题,请参考以下文章

PostgreSQL 13.4, 12.8, 11.13, 10.18, 9.6.23, and 14 Beta 3发布了

QQ 邮箱漂流瓶正式关闭;PostgreSQL 为 6 版本发布安全更新

连接到较旧的 Postgresql 数据库

Postgresql 9.2 错误与 group by 未出现在 postgresql 12 中

PostgreSQL 一主两备节点(两备节点为同步节点)故障恢复

ubuntu部署TimescaleDB