つい最近、Postgresql8.4.11から9.1.3にアップグレードしました。その過程でpg_dumpを使用しました。エラーが発生しました:
エラー:照合可能なタイプのcitextを持つ列 "vin"の照合は導出されませんでした
ヒント:COLLATE句を使用して、照合を明示的に設定します。
これは 以前に発生した問題 の続きです。リリースノートで提案されている修正がキャッチされなかったようです カスタムドメイン 。 8.4の CREATE DOMAIN ステートメントはCOLLATE
句さえサポートしていなかったようです。
これが私がvin
タイプを作成した方法です。
CREATE DOMAIN inventory.valid_vin AS citext
CHECK ( inventory.valid_vin( VALUE ) );
これに関する詳細については、このスレッドで私たちの通信を見つけてください:
問題は馬の口、トム・レーン、
まあ、それがあなたがcitext *を作成している方法であるなら、ええ、それは壊れています。 9.1以降、citextタイプは属性「COLLATABLE = true」で作成する必要があります。提案されたUPDATEステートメントは、事後にそれを実行できないことを修正する手段ですが、citextの上に既に作成されているドメインはカバーしていません。
出典: http://archives.postgresql.org/pgsql-general/2012-05/msg00262.php
*
私はcitextを作成していましたが、特定のダンプで作成されていたため、特別なことは何もありませんでした。
したがって、citextを介してドメインを持っている場合、8.3-> 9.1からのダンプ/復元はサポートされません。
この問題を回避するには、最初に次のようにします。
CREATE EXTENSION citext
ダンプをロードする前。DOMAINS
を操作します。