brew pin 不会阻止升级 postgresql 公式

brew pin does not prevent upgrading of postgresql formula

我试图阻止升级我当前的 posgtgresql 版本。因此我做了brew pin postgresql@12。但是我发现如果我这样做

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

我收到以下错误消息

        waiting for server to start.... stopped waiting
    pg_ctl: could not start server

Examine the log output.

查看日志输出,最后几行是

2022-05-01 17:31:00.816 AEST [18650] FATAL:  database files are incompatible with server
2022-05-01 17:31:00.816 AEST [18650] DETAIL:  The data directory was initialized by PostgreSQL version 12, which is not compatible with this version 14.2.

所以postgresql已经更新到版本14.2。

如果我这样做 brew list --pinned 它会显示

postgresql@10
postgresql@11
postgresql@12

所以我仍然 postgresql@12 固定了。那么为什么固定不起作用,我该如何将 posgresql 恢复到版本 12?

我注意到如果我这样做 brew services list 我明白了

postgresql    none           
postgresql@10 none           
postgresql@11 none           
postgresql@12 error  6 Chris ~/Library/LaunchAgents/homebrew.mxcl.postgresql@12.plist

postgresql@14 未列出,所以也许 postgresql 是通过使用 brew 以外的其他方式升级的?但是,我肯定没有进行显式升级,所以看不出这是怎么发生的。

代替这个问题的答案,我在这个 .

中解释了我从这种情况中恢复的方法

简而言之(警告这会破坏数据库

brew uninstall --force postgresql
brew install postgresql@12
cd /usr/local/var/
rm -rf postgres
initdb /usr/local/var/postgres

试着往好的方面看,这是一个通过次要版本或主要版本升级数据库的机会。