目次
久しぶりにエラーに出くわしてしまった
The data directory was initialized by PostgreSQL version 13, which is not compatible with this version 14.0.
これだ。Railsでpostgresqlでアプリケーションを作ろうとしたときに出くわした。
解決方法
$ rm -rf /usr/local/var/postgres/postmaster.pid
$ brew postgresql-upgrade-database
$ rails db:create
$rails s
なぜこのエラーが出るのか
このエラーは、HomebrewなどでアップデートしたことでPostgreSQL本体のメジャーバージョンが上がった(例:13→14)のに、既存のデータディレクトリが古いバージョンの形式のまま残っていることが原因。
PostgreSQLはメジャーバージョンが変わるとデータディレクトリの内部フォーマットに互換性がなくなることがある。そのため新しいバージョンでそのまま起動しようとすると、バージョンが合わないという上記のメッセージが出る。
上の解決方法で実行しているbrew postgresql-upgrade-databaseは、古いデータディレクトリの中身を新しいバージョン用に移行してくれるコマンド。これでバージョンの不一致が解消される。
