Izin ditolak untuk membuat "pg_catalog.tablename" selama pg_dump menargetkan mesin lain

11

Saya mencoba untuk membuang beberapa tabel dari server 9,5 beta 2 ke server 9,4.4. Bentuk perintah yang saya gunakan adalah standar yang cukup:

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

Saya menggunakan pengguna Postgres, yang saya sadari mungkin tidak ideal, tetapi karena keduanya adalah kotak pengolah data dev yang hanya saya gunakan dan relevan dengan kesalahan berikut. Awalnya, saya mendapat kesalahan

GALAT: parameter konfigurasi yang tidak dikenal "row_security"

yang diharapkan karena fitur ini baru dalam 9,5, dan, ya, saya menyadari bahwa tidak disarankan untuk pg_dump antara berbagai versi Postgres, tetapi, sayangnya tidak dapat dihindari, mengingat bahwa saya telah menabrak bug yang sangat tidak jelas, dan perlu untuk memindahkan yang besar jumlah data statis sekali.

Jadi, menggunakan hack mengerikan ini untuk menghapus kesalahan row_security, dan menyalakan stop pada kesalahan pertama:

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

Saya sekarang mendapatkan:

GALAT: izin ditolak untuk membuat "pg_catalog.tablename" DETAIL: Modifikasi katalog sistem saat ini tidak diizinkan

Meskipun mungkin tidak diinginkan untuk menggunakan pengguna / peran Postgres, pemahaman saya adalah bahwa seharusnya tidak ada masalah izin seperti ini. Saya terbuka untuk setiap saran dengan mengingat bahwa ini adalah operasi satu kali dan ini adalah kotak pengolah data yang tidak terhubung ke layanan langsung, jadi kebijaksanaan lebih disukai daripada kebijakan akses data perusahaan yang ideal. Karena itu, akan baik untuk memahami bagaimana melakukan ini dengan benar dan menghindari ini di masa depan.

John Powell
sumber

Jawaban:

13

Ini ternyata disebabkan oleh pesan kesalahan yang agak tidak jelas yang terjadi ketika skema yang Anda gunakan dengan pg_dump tidak ada pada database target / mesin. Saya akan meninggalkan pertanyaan ini, dengan harapan dapat membantu orang lain.

John Powell
sumber
Kebetulan saya juga, untungnya saya menemukan ini. Baru saja membuat skema 'publik' secara manual dan berhasil.
Robert Mikes
@RobertMikes. Senang untuk membantu. Ini adalah kesalahan yang agak tidak jelas.
John Powell
Terima kasih - untungnya saya menemukan ini sebelum terlalu terlibat di dalamnya!
James Fry
+1. Masalah ini juga membuat saya tersandung!
Jay Cummins