ปฏิเสธการอนุญาตเพื่อสร้าง“ pg_catalog.tablename” ในระหว่าง pg_dump ที่กำหนดเป้าหมายเครื่องอื่น


11

ฉันพยายามที่จะถ่ายโอนข้อมูลบางตารางจาก 9.5 เบต้า 2 ไปยังเซิร์ฟเวอร์ 9.4.4 รูปแบบของคำสั่งที่ฉันใช้นั้นเป็นมาตรฐานที่ค่อนข้างดี:

pg_dump -t table dbname | psql -h hostname -d dbname

ฉันใช้ผู้ใช้ Postgres ซึ่งฉันรู้ว่าอาจไม่เหมาะ แต่เนื่องจากทั้งสองนี้เป็นกล่องประมวลผลข้อมูล dev ที่ฉันใช้เท่านั้นและเกี่ยวข้องกับข้อผิดพลาดที่ตามมา เริ่มแรกฉันได้รับข้อผิดพลาด

ข้อผิดพลาด: พารามิเตอร์การกำหนดค่าที่ไม่รู้จัก "row_security"

ซึ่งคาดว่าเป็นคุณลักษณะนี้ใหม่ใน 9.5 และใช่ฉันรู้ว่าไม่แนะนำให้ใช้ pg_dump ระหว่างรุ่น Postgres ที่แตกต่างกัน แต่หลีกเลี่ยงไม่ได้อย่างน่าเศร้าเนื่องจากฉันได้พบข้อผิดพลาดที่คลุมเครือมากและต้องย้ายขนาดใหญ่ จำนวนข้อมูลคงที่หนึ่งครั้ง

ดังนั้นการใช้แฮ็คที่น่าเกลียดนี้เพื่อลบข้อผิดพลาด row_security และการหยุดข้อผิดพลาดครั้งแรก:

pg_dump -t tablemame dbname |sed 's/SET row_security = off;//'|
psql -v ON_ERROR_STOP=1 -h hostname -d dbname

ตอนนี้ฉันได้รับ:

ข้อผิดพลาด: สิทธิ์ที่ถูกปฏิเสธในการสร้าง "pg_catalog.tablename" รายละเอียด: การแก้ไขแคตตาล็อกระบบไม่ได้รับอนุญาตในขณะนี้

แม้ว่ามันจะไม่เป็นที่พึงปรารถนาที่จะใช้ผู้ใช้ / บทบาทของ Postgres ความเข้าใจของฉันคือว่าไม่ควรมีปัญหาการอนุญาตในลักษณะนี้ ฉันเปิดรับข้อเสนอแนะใด ๆ โดยคำนึงว่านี่เป็นการดำเนินการเพียงครั้งเดียวและสิ่งเหล่านี้เป็นกล่องการประมวลผลข้อมูลที่ไม่เชื่อมต่อกับบริการถ่ายทอดสดใด ๆ ดังนั้นความได้เปรียบที่ต้องการมากกว่านโยบายการเข้าถึงข้อมูลในองค์กร ต้องบอกว่ามันจะเป็นการดีที่จะเข้าใจวิธีการทำสิ่งนี้อย่างถูกต้องและหลีกเลี่ยงสิ่งนี้ในอนาคต

คำตอบ:


13

สิ่งนี้เกิดขึ้นเนื่องจากข้อความแสดงข้อผิดพลาดที่ค่อนข้างคลุมเครือซึ่งเกิดขึ้นเมื่อสกีมาที่คุณทิ้งจากด้วย pg_dump ไม่มีอยู่ในฐานข้อมูล / เครื่องเป้าหมาย ฉันจะทิ้งคำถามนี้ไว้โดยหวังว่ามันจะช่วยคนอื่นได้


เกิดขึ้นกับฉันด้วยโชคดีที่ฉันพบสิ่งนี้ เพียงสร้างคีมา 'สาธารณะ' ด้วยตนเองและทำงานได้
Robert Mikes

@RobertMikes ดีใจที่ได้ช่วยเหลือ มันเป็นข้อผิดพลาดค่อนข้างคลุมเครือ
John Powell

ขอบคุณ - โชคดีที่ฉันพบสิ่งนี้ก่อนที่จะเข้าร่วมด้วย!
James Fry

+1 ปัญหานี้เพิ่งทำให้ฉันสะดุดเช่นกัน!
Jay Cummins
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.