উত্তর:
এটি কারণ pg_restore কাজ করে।
pg_restore ম্যানুয়ালটি নীচের হিসাবে পড়ুন:
-C, --create ডাটাবেসে পুনরুদ্ধার করার আগে এটি তৈরি করুন। যদি - ক্ল্যানটিও নির্দিষ্ট করা থাকে তবে লক্ষ্যযুক্ত ডাটাবেসটি সংযুক্ত হওয়ার আগে এটি ড্রপ করে পুনরায় তৈরি করুন।
এই বিকল্পটি ব্যবহার করা হলে, -d নামের ডাটাবেসটি কেবলমাত্র প্রাথমিক DROP DATABASE এবং CREATE DATABASE কমান্ড জারি করতে ব্যবহৃত হয় । সংরক্ষণাগারে প্রদর্শিত ডাটাবেসের নামটিতে সমস্ত ডেটা পুনরুদ্ধার করা হয়েছে ।
-D প্রদত্ত ডাটাবেসে পুনরুদ্ধার করবে যদি এবং কেবল -C ব্যবহার না করা হয়। যদি-সি ব্যবহার করা হয় তবে ডেটাবেসটি "লঞ্চপ্যাড" হিসাবে ব্যবহার করা হবে, গন্তব্য হিসাবে নয়।
docker-compose -p dump_import -f docker/dump_import.yml run --rm be bash -c 'waitforit -host=postgres -port=5432 -timeout=30 && export PGPASSWORD=$DATABASE_PASSWORD && createdb --echo --port=$DATABASE_PORT -host=$DATABASE_HOST --username=$DATABASE_USER $DATABASE_NAME && pg_restore --format=c --dbname=$DATABASE_URL_WITHOUT_QUERY tmp/full.dump && echo "Import done"'
সংক্ষেপে, আপনি যে কোনওটি চান (বিদ্যমানটি পরিষ্কার করুন): (ডাটাবেসের নামটি নোট করুন postgres
)
pg_restore -c -d postgres db.dump
বা (নতুন তৈরি)
pg_restore -C -d postgres db.dump
বা (স্পষ্টভাবে নতুন তৈরি করুন)
createdatabase the_database
pg_restore -d the_database db.dump
আরও তথ্যের জন্য এসসিও কী বলেছিল তা দেখুন।
pg_restore: [archiver] -C and -c are incompatible options
pg_restore -C -d postgres db.dump
ভয়াবহ লাগতে পারে তবে পোস্টগ্রিস ডাটাবেসে এটি কিছুই করে না, এটি কেবল এটি প্রাথমিক সংযোগের জন্য ব্যবহার করে।
কিছুটা স্পষ্ট করে বলতে গেলে, এটিই আমি করলাম যা আমার জন্য সমস্যার সমাধান করেছিল:
আপনি যে নামটি চান তার সাথে একটি খালি ডাটাবেস তৈরি করুন: (আমার ক্ষেত্রে ব্যবহারকারীর নামটি 'পোস্টগ্রিস' ছিল)
psql -U [username]
এটি আপনাকে আপনার পাসওয়ার্ডের জন্য অনুরোধ করবে। এই মুহুর্তে আপনি [ব্যবহারকারীর নাম] হিসাবে লগ ইন করা হবে। নিম্নলিখিত টাইপ করুন:
CREATE DATABASE [dbname];
এখন সেশনটি থেকে প্রস্থান করুন এবং আপনার নিয়মিত টার্মিনাল সেশনে ফিরে যান।
আপনি সবেমাত্র তৈরি করা ডাটাবেসের নাম হিসাবে আপনি যে টার্গেট ডাটাবেসের নাম সেট করেছেন সেটি ফাইল থেকে ডাটাবেস পুনরুদ্ধার করুন।
cat [your_file_path/filename] | psql -U [username] [dbname]
[[Your_file_path / filename]] যেখানে আপনি পুনরুদ্ধার করতে চান ডিবি ফাইল বা পাঠ্য ফাইলের অবস্থান।
-F
বিকল্পটি ব্যবহার করে ব্যাকআপ তৈরি করার সময় আপনি ব্যাকআপটি পুনরুদ্ধার করতে pg_restore ব্যবহার করতে হবে যদি না আপনি ব্যবহার করেন -F p
যা স্ক্যালি বাক্য সহ একটি সরল পাঠ্য ফাইল তৈরি করে।
pg_restore
। -সি বিকল্পটি কেবল একটি ডাটাবেস তৈরি করতে পারে যার নাম ডাম্প ফাইলে ডাটাবেসের নামের সাথে মেলে। একটি স্বেচ্ছাসেবক ডাটাবেস পুনরুদ্ধার করতে, আপনি চালানোরCREATE DATABASE new_db;
আগে আপনাকে পিএসকিএল চালাতে হবেpg_restore --dbname=new_db
।