PostgreSqlとpostGisのインストールを(Homebrewを使用して)アップグレードしました。 「postgresql-upgrade-database」を作成できなくなり(データが「エラー:以前の試行からすでにアップグレードされました」と表示されているため、試行が失敗したため、アップグレードされていません)、手動の「pg_upgrade」ルートを使用します。 'template1'データベースを処理するまでは問題ありません
lc_collate values for database "postgres" do not match: old "C", new "en_US.UTF-8"
エラー。私はその 'template1'データベースを作成しなかったので、文字列一致の要件をなんらかの方法でオーバーライドできる場合は、(何らかの理由で必要でない場合は)消費可能です。アドバイスをよろしくお願いします。
影響を受けるデータベースが不明です:postgres
またはtemplate1
。
pg_upgrade
を使用するには、新しいクラスターと古いクラスターを同じロケールでインストールする必要があります。だから試してみてください
initdb --locale=C ...
新しいクラスターを作成します。
template1
は不可欠なデータベースです。データベースがないと、CREATE DATABASE
に問題が発生します。また、postgres
管理データベースも保持する必要があります。
両方のデータベースのロケールが異なる場合は、次のように同じ方法で新しいクラスターを作成する必要があります。
DROP DATABASE postgres;
CREATE DATABASE postgres
LC_COLLATE 'C' LC_CTYPE 'C'
TEMPLATE template0;
これは私のために働いた。 template1
&template0
についても以下のクエリを繰り返します
UPDATE pg_database SET datcollate='C', datctype='UTF-8' WHERE datname='postgres'