Postgresql
pg_restore 警告列 X 的類型未知
我正在從 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”的類型為“未知” 細節:繼續進行關係創建。 創建視圖
結果:
測試 => \d 測試視圖 查看“public.testview” 專欄 | 類型 | 修飾符 --------+---------+----------- 吧台 | 未知 |
如果此視圖是 pg_dumped 和 pg_restored,則將再次創建該列,
unknown
並再次提到警告:pg_restore:警告:列“foobar”的類型為“未知”
詳細資訊:繼續進行關係創建。
應該在需要時從對列的顯式強制轉換開始創建表/視圖,如
CREATE VIEW testview AS SELECT 'bla'::text AS foobar;
我們可以假設這是該警告的重點。