pg_restore.exe ব্যবহার করার আগে সীমাবদ্ধতাগুলি অক্ষম করুন


16

আমি যখন pg_restore.exeএকটি ডেটাবেস থেকে ডাম্প ফাইলটি চালানোর চেষ্টা করি , তখন এটি কয়েক ডজন ত্রুটি ফেলে দেয়, সমস্ত একই:

ERROR: insert or update on table "someTable" violates foreign key constraint "aConstraintName"

এটি অবশ্যই ডাম্প ফাইল থেকে পুনরুদ্ধারের আগে ডেটা বেসটি খালি করে দেওয়ার কারণে হয়েছে (এই ফাইলটি একটি প্রোডাকশন ডাটাবেস থেকে আসে) ... তবে অবশ্যই কোনও রেফারেন্স সারণী খালি থাকলে কোনও বিদেশী কী বাধা ঠিকঠাক হতে পারে না ...

আমি কল করার আগে pg_restore.exe, এবং তারপরে, সীমাবদ্ধতা এবং বিদেশী কীগুলি পুনরায় সক্ষম করার জন্য সমস্ত টেবিলের জন্য সীমাবদ্ধতা এবং সমস্ত বিদেশী কীগুলি নিষ্ক্রিয় করার কোনও উপায় আছে কি?

এসওতে আমি আকর্ষণীয় কিছু পেয়েছি: সময় দেওয়ার জন্য সীমাবদ্ধতা পরীক্ষা করা পিছিয়ে । তবে আমি মনে করি না যে সীমাবদ্ধতাগুলি পিছিয়ে দেওয়ার পরে আমি pg_restore.exeভিতরে থেকে কল করতে পারি psql.exe

রয়েছে এই পোস্টে , 10 বছর আগে ফিরে ডেটিং, সীমাবদ্ধতা পুনরায় যোগ তারপর ড্রপ পরামর্শ। বা pg_class পুনরুদ্ধারকারীদের মান 0 তে পরিবর্তন করতে এবং এটিও সীমাবদ্ধতার পক্ষে সম্ভব হবে ... তবে আমি আশঙ্কা করি এটি ভাল অনুশীলনের চেয়ে বেশি হ্যাকিং ...

আপনি কী পরামর্শ দেবেন, এই ক্ষেত্রে সবচেয়ে ভাল অনুশীলন কী? ব্যবহার করছে pg_dump.exe সঙ্গে -cleanপতাকা একটি ডাম্প যে সীমাবদ্ধতা যখন ডাটাবেসের পুনরূদ্ধার পরীক্ষণ রোধ করা যাবে সৃষ্টি করতে?


ক্রস পোস্ট এখানে, যদি কেউ পরে এটির
ক্রেগ রিঞ্জার

উত্তর:


28

আপনি কি --disable-triggersবিকল্পটি ব্যবহার করে দেখেছেন pg_restore?

ডকুমেন্টেশন অনুসারে: আপনার যদি ডেটা পুনরায় লোডের সময় আপনি যে টেবিলগুলিতে অনুরোধ করতে চান না এমন টেবিলে রেফারেন্সিয়াল অখণ্ডতা পরীক্ষা বা অন্যান্য ট্রিগার থাকে তবে এটি ব্যবহার করুন।

দয়া করে নোট করুন যে এটি কেবল --data-onlyপুনরুদ্ধারের জন্য বৈধ এবং --superuser=usernameপাশাপাশি পাস করার বিকল্পটিও প্রয়োজন ।


এবং এটি একটি কবজির মতো কাজ করে ...
স্টিফেন রোল্যান্ড
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.