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