私はPostgreSQL 9.1からダンプを実行し、PostgreSQL 9.4で復元してこの警告を受けています
pg_restore: WARNING: column "foobar" has type "unknown"
DETAIL: Proceeding with relation creation anyway.
しかし、復元後、列「foobar」タイプが定義され、正しいことを確認できます。
この警告の原因は何ですか?
CREATE VIEW
またはCREATE TABLE... AS SELECT
作成するリレーションの列タイプを推測する必要があります。たとえば、文字列リテラルだけの場合など、コンテキストがデータ型を推測するのに十分でない場合があります。この場合、unknown
として作成されます。
例:
test => CREATE VIEW testview AS SELECT 'bla' AS foobar; 警告:列「foobar」のタイプは「不明」です。 ____。]ビューを作成
結果:
test =>\d testview View "public.testview" Column |タイプ|修飾子 -------- + --------- + ----------- foobar |不明|
このビューがpg_dumpedおよびpg_restoredである場合、列はunknown
として作成され、警告が再度表示されます。
pg_restore:警告:列「foobar」のタイプは「不明」です
詳細:とにかく関係の作成を続行します。
テーブル/ビューは、次のように、必要なときに列への明示的なキャストで始まるように作成する必要があります
CREATE VIEW testview AS SELECT 'bla'::text AS foobar;
私たちが推測できるのは、そもそもその警告のポイントです。