我有一個名爲test的id表,其中包含id列。並且id列已經被稱爲「test_id_seq」的序列更新。該測試表由用戶「A」創建,另一個用戶「B」具有讀取權限。從用戶「B」創建表的轉儲時。使用下面的評論在postgres中轉儲一個沒有序列表的表
pg_dump -U B -t test rafiu > test.sql
它顯示像錯誤
的pg_dump:[歸檔(DB)查詢失敗:錯誤:拒絕關係test_id_seq
許可,是否有任何選項來轉儲只有桌子?
我有一個名爲test的id表,其中包含id列。並且id列已經被稱爲「test_id_seq」的序列更新。該測試表由用戶「A」創建,另一個用戶「B」具有讀取權限。從用戶「B」創建表的轉儲時。使用下面的評論在postgres中轉儲一個沒有序列表的表
pg_dump -U B -t test rafiu > test.sql
它顯示像錯誤
的pg_dump:[歸檔(DB)查詢失敗:錯誤:拒絕關係test_id_seq
許可,是否有任何選項來轉儲只有桌子?
您是否嘗試過使用-T
選項忽視的順序?
pg_dump -U B -T test_id_seq rafiu > test.sql
這應該採取沒有序列的pgdump。
當序列「擁有」的一列,它甩了下來,這樣就產生了轉儲用戶必須有權訪問它(GRANT SELECT ON sequence_name TO username
)
使用SERIAL
/BIGSERIAL
假時,會出現這種情況數據類型。然而,該序列仍然可以從列事後發行分離:
ALTER SEQUENCE test_id_seq OWNED BY none;
之後,分配爲test.ID
與序列的默認值將繼續照常工作,但告訴pg_dump不會試圖轉儲與表順序。
如果從開始時創建與預先存在的序列(不使用SERIAL
)該表中,則結果是,無需ALTER SEQUENCE相同。
實施例:
create sequence seq1;
create table test1 (id int default nextval('seq1'));
在這種情況下該表將與pg_dump -t test1
傾倒爲:
CREATE TABLE test1 (
id integer DEFAULT nextval('seq1'::regclass)
);
沒有其他參考seq1
和不需要權限讀取它。
你真的需要什麼樣的轉儲?如果您需要也可以爲用戶B訪問的數據,請使用--data-only選項。 –
我需要表結構和數據。那可能嗎。 – Rafiu
序列作爲結構的一部分進行計數。任何不授予「B」權限轉儲序列的理由? –