Postgresql

pg_restore 警告列 X 的類型未知

  • July 9, 2015

我正在從 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;

我們可以假設這是該警告的重點。

引用自:https://dba.stackexchange.com/questions/106372