আমি পোস্টগ্রিএসকিউএল ডাটাবেস ব্যাকআপ এবং পুনরুদ্ধার করতে pg_dump / pg_restore ব্যবহার করছি তবে pg_restore থেকে কিছু ত্রুটি বার্তা (এবং একটি শূন্য-বহির্গমন স্থিতি) পাচ্ছি। আমি একটি সুপার সাধারণ বেস কেস চেষ্টা করেছি (নীচে বর্ণিত) তবে এখনও এই ত্রুটিগুলি পেয়েছে:
pg_restore: [তীরচিহ্ন (ডিবি)] টিউসি প্রসেসিংয়ের সময় ত্রুটি: পিজি_রেস্টোর: [আর্কিভার (ডিবি)] টিওসি এন্ট্রি 5 থেকে ত্রুটি; 2615 2200 SCHEMA সর্বজনীন পোস্টগ্রাগেস pg_restore: [আরিচিভার (ডিবি)] কোয়েরি কার্যকর করতে পারেনি: ERROR: স্কিমা "পাবলিক" ইতিমধ্যে বিদ্যমান কমান্ডটি ছিল: স্কেম জনসাধারণকে তৈরি করুন;
ধাপ পুনর্গঠন কর:
- একটি নতুন, ভ্যানিলা উবুন্টু 14.04 ডিস্ট্রো ইনস্টল করুন (আমি এই ভ্যাগ্র্যান্ট বাক্সের সাথে ভ্যাগ্র্যান্ট ব্যবহার করছি )।
- PostgreSQL 9.3 ইনস্টল করুন, যে কোনও লিনাক্স ব্যবহারকারীর পোস্টগ্র্রেএসকিউএল ব্যবহারকারী "পোস্টগ্রিজ" হিসাবে স্থানীয় সংযোগের অনুমতি দেওয়ার জন্য কনফিগার করুন।
একটি পরীক্ষা ডাটাবেস তৈরি করুন। আমি শুধু করছি:
ভ্যাগ্র্যান্ট @ ভ্যাগ্র্যান্ট-উবুন্টু-বিশ্বাসযোগ্য -৪:: $ $ পিএসকিএল - ব্যবহারকারী নাম = পোস্টগ্রিস পোস্টগ্রিস পিএসকিএল (9.3.5) সহায়তার জন্য "সহায়তা" টাইপ করুন। postgres = # ডেটাবেস মাইডিবি তৈরি করুন; ডেটাবেস তৈরি করুন postgres = # \ কিউ ভ্যাগ্র্যান্ট @ ভ্যাগ্র্যান্ট-উবুন্টু-বিশ্বাসযোগ্য -৪:: $ $ পিএসকিএল - ব্যবহারকারীর নাম = পোস্টগ্রিজ মাইডিবি পিএসকিএল (9.3.5) সহায়তার জন্য "সহায়তা" টাইপ করুন। mydb = # টেবিল ডেটা তৈরি করুন (এন্ট্রি বিগিন্ট); ছক তৈরি কর mydb = # ডেটা মানগুলিতে সন্নিবেশ (1); সংযুক্ত 0 1 mydb = # ডেটা মানগুলিতে প্রবেশ করান (2); সংযুক্ত 0 1 mydb = # ডেটা মানগুলিতে প্রবেশ করান (3); সংযুক্ত 0 1 mydb = # \ কিউ
ডাটাবেসের ব্যাকআপ যেমন তৈরি করুন:
পিজিপিএএসডাবর্ড = "পোস্টগ্রিস" পিজি_ডাম্প - ডিবি নাম = মাইডিবি - ব্যবহারকারীর নাম = পোস্টগ্রিস - ফর্ম্যাট = কাস্টম> পিজি_ব্যাকআপ.ডম্প
মাইডবিতে ডেটা টেবিলের বাইরে কিছু সারি মুছুন যাতে আমরা সফলভাবে ডেটা পুনরুদ্ধার করেছি কিনা তা আমরা বলতে সক্ষম হব।
এর সাথে ডাটাবেস পুনরুদ্ধার করুন:
পিজিপিএএসডব্লর্ড = "পোস্টগ্রিস" পিজি_রেস্টোর - ক্লায়ান - ক্রিয়েট - ডিবি নাম = পোস্টগ্রিস - ইউজারনেম = পোস্টগ্রিস পিজি_ব্যাকআপ.ডম্প
ডেটা পুনরুদ্ধার করা হয়েছে, তবে pg_restore কমান্ড step ধাপে স্থিতি সহ প্রস্থান করে 1
এবং নিম্নলিখিত আউটপুটটি দেখায়:
pg_restore: [তীরচিহ্ন (ডিবি)] টিউসি প্রসেসিংয়ের সময় ত্রুটি: পিজি_রেস্টোর: [আর্কিভার (ডিবি)] টিওসি এন্ট্রি 5 থেকে ত্রুটি; 2615 2200 SCHEMA সর্বজনীন পোস্টগ্রাগেস pg_restore: [আরিচিভার (ডিবি)] কোয়েরি কার্যকর করতে পারেনি: ERROR: স্কিমা "পাবলিক" ইতিমধ্যে বিদ্যমান কমান্ডটি ছিল: স্কেম জনসাধারণকে তৈরি করুন; সতর্কতা: পুনরুদ্ধার করতে ত্রুটিগুলি উপেক্ষা করা হয়েছে: 1
আমি কেবল এটিকে উপেক্ষা করতে পারি না কারণ আমি এই কমান্ডটি প্রোগ্রামগতভাবে চালাচ্ছি এবং পুনরুদ্ধারটি ব্যর্থ হয়েছে কি না তা নির্ধারণের জন্য প্রস্থান স্থিতি ব্যবহার করতে হবে। প্রাথমিকভাবে, আমি ভাবছিলাম যে এই সমস্যাটি কিনা কারণ আমি আমার ডাটাবেসটিকে জনসাধারণের মধ্যে রেখেছি (ডিফল্ট স্কিমা)। আমি যুক্তি দিয়েছিলাম যে --create
ডেটা পুনরুদ্ধারের আগে pg_restore দ্বারা অপশনটির ফলাফল হিসাবে সর্বজনীন তৈরি করা হবে (যা টেবিলটি সেখানে রয়েছে সেহেতু সেই স্কিমাটি তৈরি করার চেষ্টা করতে পারে) তবে যখন আমি আমার টেবিলটি দিয়ে উপরের পদক্ষেপগুলি চেষ্টা করেছি একটি পৃথক স্কিমে, ফলাফলগুলি একই ছিল এবং ত্রুটির বার্তাগুলি অভিন্ন ছিল।
আমি কি ভুল কিছু করছি? আমি কেন এই ত্রুটিটি দেখছি?
--create
ছাড়াইclean
সমস্যাটির সমাধান হয় না।