পোস্টগ্র্যাস্কল 9.2 পিজি_ডাম্প সংস্করণটি মেলেনি


141

আমি pg_dump সরঞ্জাম ব্যবহার করে একটি Postgresql ডাটাবেস ডাম্প করার চেষ্টা করছি ।

$ pg_dump books > books.out

আমি কখনই এই ত্রুটি পাচ্ছি।

pg_dump: server version: 9.2.1; pg_dump version: 9.1.6
pg_dump: aborting because of server version mismatch

--ignore-versionবিকল্প বর্তমানে অবচিত হয়েছে এবং সত্যিই যদিও তা কাজ করেছেন আমার বিষয় এএ সমাধান হবে না।

এই সমস্যাটি সমাধান করার জন্য আমি কীভাবে পিজি_ডাম্প আপগ্রেড করতে পারি ?


উত্তর:


27

আপনি pg_dumpক্লায়েন্ট মেশিনে PostgreSQL 9.2.1 ইনস্টল করতে পারেন বা $PGHOMEপোস্টগ্র্রেএসকিউএল সার্ভার মেশিন থেকে ক্লায়েন্ট মেশিনে অনুলিপি করতে পারেন। নোট করুন যে initdbক্লায়েন্ট মেশিনে কোনও নতুন ক্লাস্টারের প্রয়োজন নেই ।

আপনি 9.2.1 সফ্টওয়্যার ইনস্টল করার পরে, আপনার .bash_profileফাইলে কিছু পরিবেশের ভেরিয়েবল সম্পাদনা করতে ভুলবেন না ।


75

উবুন্টুতে হিরোকু ব্যবহার করার সময় আমি এর মুখোমুখি হয়েছিলাম এবং আমি কীভাবে এটি স্থির করেছি তা এখানে:

  1. " লিনাক্স ডাউনলোডগুলি (উবুন্টু) " তে বর্ণিত হিসাবে পোস্টগ্রিজ এসকিউএল এপিটি সংগ্রহস্থল যুক্ত করুন । (অন্যান্য অপারেটিং সিস্টেমের জন্যও একই পৃষ্ঠা রয়েছে))

  2. এর সাথে সর্বশেষতম সংস্করণে (9.3) আপগ্রেড করুন:

    sudo apt-get install postgresql
  3. এর /usr/binসাথে প্রতীকী লিঙ্কটি পুনরুদ্ধার করুন :

    sudo ln -s /usr/lib/postgresql/9.3/bin/pg_dump /usr/bin/pg_dump --force

    /usr/lib/postgresql/...উপরের পাথের সংস্করণ নম্বরটি server versionআপনার প্রাপ্ত ত্রুটির সংখ্যার সাথে মিলবে । সুতরাং আপনার ত্রুটি যদি বলে pg_dump: server version: 9.9, তবে লিঙ্ক করুন /usr/lib/postgresql/9.9/...


আপনি কেবল PostgreSQL আপগ্রেড করলেই এটি ঘটে। আমি মাত্র ওএস-এর একটি নতুন ইনস্টল করেছি এবং এতে কোনও সমস্যা নেই problems
শেঠ

যে কেউ ভাবছেন, এই সমাধানটি নন-হেরোকু উবুন্টুতেও প্রযোজ্য।
আয়ানবাসিয়ার্স

2
এই উত্তরে যা বলা হয়েছিল তা অনুসারে এটি বেশ খারাপ ধারণাও।
আর্থার

এই উত্তরটি কোনও ফোল্ডার মোছার মাধ্যমে সফ্টওয়্যার অপসারণের প্রস্তাব দেয়। এখানে আমরা একটি প্রতীকী লিঙ্কটি পুনরায় তৈরি করছি।
শেঠ

2
পারফেক্ট!
পোস্টগ্রাগেস

61
  1. Pg_dump এর ইনস্টলড সংস্করণ (গুলি) দেখুন:

    find / -name pg_dump -type f 2>/dev/null
  2. আমার আউটপুটটি ছিল:

    /usr/pgsql-9.3/bin/pg_dump
    /usr/bin/pg_dump
    
  3. দুটি সংস্করণ ইনস্টল করা আছে। নতুন সংস্করণ সহ pg_dump আপডেট করতে:

    sudo ln -s /usr/pgsql-9.3/bin/pg_dump /usr/bin/pg_dump --force

এটি নতুন সংস্করণে সিমলিংক তৈরি করবে।


2
আমার কাছে সংস্করণগুলি খুঁজে পেতে এটি খুব দ্রুত হয়েছিলlocate pg_dump
ওব্রোমিওস

1
আইএমও, আপনার যুক্ত করা উচিত নয় 2>/dev/nullযেহেতু এটি কনসোলটিতে মুদ্রণের পরিবর্তে ERROR স্ট্রিমটি ছুঁড়ে ফেলবে। আমি মনে করি যে কোনও বিরল ঘটনা বাদে কোনওরকম ত্রুটি ঘটতে দেখা উচিত। উদাহরণস্বরূপ, আমার ক্ষেত্রে এটি আমাকে মনে করিয়ে দেয় যে আমি মূলত এমন কোনও ডিরেক্টরি দেখতে ব্যর্থ হয়েছি যেখানে নতুন pg_dump সংস্করণটি ইনস্টল করা হয়েছিল। সাধারণভাবে, ত্রুটিগুলি সরান না।
পোট্রাথর

40

ম্যাকের একটি বিল্টিন /usr/bin/pg_dumpকমান্ড রয়েছে যা ডিফল্ট হিসাবে ব্যবহৃত হয়।

Postgresql ইনস্টল করার সাথে সাথে আপনি অন্য বাইনারি পাবেন /Library/PostgreSQL/<version>/bin/pg_dump


3
পোস্টগ্রিএসকিউএল কীভাবে ইনস্টল করা হয়েছিল (এন্টারপ্রাইজডিবি ইনস্টলার, ম্যাকপোর্টস, হোমব্রিউ ইত্যাদি) তার উপর নির্ভর করে অবস্থানটি পৃথক হবে, তবে উত্তরের উত্তরটি - ব্যবহারকারীটির ইতিমধ্যে সঠিক সংস্করণ ইনস্টল করা আছে - অবশ্যই সঠিক।
ক্রেগ রিঞ্জার

3
আমার ক্ষেত্রে .bash_profile খুলুন এবং "এক্সপোর্ট PATH = / অ্যাপ্লিকেশনস / Postgres.app / বিষয়বস্তু / ম্যাকোস / বিন: $ PATH" যুক্ত করে যাদুটি করেছে।
অ্যালেক্স ওয়েবার

29

আপনি কেবল pg_dumpকমান্ডের পুরো পথটি সনাক্ত করতে এবং ব্যবহার করতে পারেন

locate pg_dump

/usr/bin/pg_dump
/usr/bin/pg_dumpall
/usr/lib/postgresql/9.3/bin/pg_dump
/usr/lib/postgresql/9.3/bin/pg_dumpall
/usr/lib/postgresql/9.6/bin/pg_dump
/usr/lib/postgresql/9.6/bin/pg_dumpall

এখন কমান্ডে কাঙ্ক্ষিত সংস্করণটির পথটি ব্যবহার করুন

/usr/lib/postgresql/9.6/bin/pg_dump books > books.out

1
সেন্টোস ব্যবহারকারীদের জন্য (আমার সংস্করণটি 6.9 ফাইনাল):sudo /usr/pgsql-<version>/bin/pg_dump <database-name> -U <username> -h localhost
ডেভিডসন লিমা

@ jDub9 ডাম্প নেওয়ার সময় আপনি কোন সংস্করণ ব্যবহার করেছিলেন? আপনি একই ব্যবহার করছেন তা নিশ্চিত করুন
দীপক মহাকালে

16

আপনি যদি উবুন্টুতে থাকেন তবে আপনার একটি পুরানো সংস্করণ postgresql-clientইনস্টল থাকতে পারে । আপনার ত্রুটি বার্তার সংস্করণগুলির ভিত্তিতে সমাধানটি নিম্নলিখিত হবে:

sudo apt-get remove postgresql-client-9.1
sudo apt-get install postgresql-client-9.2

11

প্রতিবার আপনি PostgreSQL এর একটি নতুন সংস্করণ আপগ্রেড বা পুনরায় ইনস্টল করুন, এর একটি সর্বশেষতম সংস্করণ pg_dump ইনস্টল করা হবে।

PostgreSQL/bin আপনার ইনস্টল করা পোস্টগ্রিএসকিউএল এর সর্বশেষতম সংস্করণে আপনার সিস্টেমে কোথাও একটি ডিরেক্টরি থাকতে হবে (9.2.1 সর্বশেষতম) এবং pg_dump সেখান থেকে চালনার চেষ্টা করুন ।


10
টিপ: ইন Terminal.app,find / -name pg_dump -type f 2>/dev/null
ক্রেগ রিঞ্জার

8

যারা পোস্টগ্রিস.এপ চালাচ্ছেন তাদের জন্য :

  1. নিম্নলিখিত কোডটি আপনার যুক্ত করুন .bash_profile:

    export PATH=/Applications/Postgres.app/Contents/Versions/latest/bin:$PATH
  2. টার্মিনাল পুনরায় আরম্ভ করুন।


7

Homebrew সহ ম্যাক্সের জন্য। হিরোকু থেকে ডিবি আনার সময় আমার এই সমস্যা হয়েছিল। আমি এটি ঠিক চলমান স্থির করেছি:

brew upgrade postgresql



3

যেমনটি ব্যাখ্যা করা হয়েছে, এটি কারণ আপনার পোস্টগ্র্যাস্কেলটি পুরানো সংস্করণে রয়েছে -> হোমব্রুয়ের মাধ্যমে ম্যাকের জন্য এটি আপডেট করুন:

brew tap petere/postgresql,

brew install <formula>(যেমন brew install petere/postgresql/postgresql-9.6:)

পুরাতন পোস্টগ্রী সরান:

brew unlink postgresql

brew link -f postgresql-9.6

যদি কোনও ত্রুটি ঘটে থাকে তবে প্রতিটি পদক্ষেপে ব্রিউ নির্দেশাবলী পড়া এবং অনুসরণ করতে ভুলবেন না।

এটি আরও দেখুন: https://github.com/petere/homebrew-postgresql


3

একটি বিকল্প উত্তর যা আমি মনে করি না যে অন্য কেউ coveredেকে রেখেছে।

আপনার যদি একাধিক পিজি ক্লাস্টার ইনস্টল থাকে (যেমন আমি করি) তবে আপনি যারা ব্যবহার করছেন তারা দেখতে পারেন pg_lsclusters

আপনি প্রদর্শিত তালিকা থেকে সংস্করণ এবং ক্লাস্টারটি দেখতে সক্ষম হবেন।

সেখান থেকে, আপনি এটি করতে পারেন:

pg_dump --cluster=9.6/main books > books.out

স্পষ্টতই, pg_lsclustersসংস্করণ এবং ক্লাস্টারটিকে / / দিয়ে আলাদা করে সংস্করণ এবং ক্লাস্টারকে পৃথক করে ফিরিয়ে দেওয়া থেকে আপনার পরিস্থিতিতে উপযুক্ত সংস্করণ এবং ক্লাস্টারের নামটি প্রতিস্থাপন করুন । এটি নির্দিষ্ট যে ক্লাস্টারের বিরুদ্ধে আপনি যেতে চান তা লক্ষ্য করে।


1
এটি খুব দরকারী। আমি বিভ্রান্ত হয়ে পড়েছিলাম কেন pg_dumpআমার ক্লাস্টারের কোনওটিতে কাজ করছে না working দেখা যাচ্ছে, এটি যখন আমার ক্লাস্টারগুলির মধ্যে একটি নতুন সংস্করণে আপগ্রেড হয়েছিল তখন এটি ডিফল্ট পোস্টগ্র্যাস্কিল সংস্করণ ব্যবহার করে। ক্লাস্টার নির্দিষ্ট করে, সমস্যার সমাধান করা।
Andrius

3

আমার জন্য সমস্যাটি আপডেট psql apt-getহচ্ছিল নতুন সংস্করণগুলি সমাধান করার পরেও নয় update। নিম্নলিখিত কাজ করে।

উবুন্টু

PostgreSQL প্যাকেজগুলির জন্য GPG কী আমদানি করে শুরু করুন।

sudo apt-get install wget ca-certificates
wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -

এখন আপনার সিস্টেমে সংগ্রহস্থল যুক্ত করুন।

sudo sh -c 'echo "deb http://apt.postgresql.org/pub/repos/apt/ `lsb_release -cs`-pgdg main" >> /etc/apt/sources.list.d/pgdg.list'

উবুন্টুতে পোস্টগ্রিএসকিউএল ইনস্টল করুন

sudo apt-get update
sudo apt-get install postgresql postgresql-contrib

https://www.postgresql.org/download/linux/ubuntu/


1
এটি আপনার কম্পিউটারে বিদ্যমান এক্সিকিউটেবল ফাইলগুলিকে প্রতিস্থাপন করবে না, সুতরাং আপনাকে স্পষ্টভাবে pg_dump এর নতুন সংস্করণটি ব্যবহার করতে হবে, যেমন, /usr/lib/postgresql/9.6/bin/pg_dump বা একটি নতুন শর্টকাট যেমন / usr / bin তৈরি করতে হবে / pg_dump96
Vinh

এটি যেটি নতুন করে তুলেছে তা স্পষ্টভাবে আমাকে ব্যবহার করতে হবে না।
rado

2

আপনি যদি ডকার ইনস্টল করেন তবে আপনি এর মতো কিছু করতে পারেন:

$ docker run postgres:9.2 pg_dump books > books.out

এটি পোস্টগ্রিস 9.2 এর সাথে ডকার কন্টেইনারটি ডাউনলোড করবে, ধারকটির pg_dumpঅভ্যন্তরে চালাবে এবং আউটপুট লিখবে।


2

উত্তরটি নির্বোধ শোনায় তবে আপনি যদি পূর্ববর্তী সংস্করণটির জন্য pg_dump চালাতে চান এবং উপরের ত্রুটিটি পেতে চান তবে পোস্টগ্রিসের বিন ডিরেক্টরিতে গিয়ে টাইপ করুন

./pg_dump সার্ভারনেম> আউট.এসকিউএল। / মূলটিকে উপেক্ষা করে বর্তমান ডিরেক্টরিতে pg_dump সন্ধান করে


2

আমারও একই ত্রুটি ছিল এবং আমি আমার ক্ষেত্রে এটি সমাধান করেছি। এর অর্থ আপনার পোস্টগ্র্যাস্কল সংস্করণটি 9.2.1 হয় তবে আপনি 9.1.6 এর পোস্টগ্র্যাস্কিল পরিষেবা শুরু করেছেন।

আপনি যদি চালান psql postgresআপনি দেখতে পাবেন:

psql (9.2.1, server 9.1.6)

এই সমস্যাটি সমাধান করতে আমি যা করেছি তা হ'ল:

  1. brew services stop postgresql@9.1.6
  2. brew services restart postgresql@9.2.1

এখন রান করুন psql postgresএবং আপনার উচিত:psql (9.2.1)

আপনি brew services listআপনার পোস্টগ্রাগের স্থিতি দেখতে দৌড়াতে পারেন।


1

** ইনস্টল করার পরে পোস্টগ্রাসের সংস্করণটি মিলছে (9.2) একটি প্রতীকী লিঙ্ক বা নতুন শর্টকাট তৈরি করুন

** - '/ usr / বিন' এ

syntag is = sudo ln -s [path for use] [new shortcut name]

উদাহরণ

sudo ln -s /usr/lib/postgresql/9.2/bin/pg_dump new_pg_dump

- কীভাবে কল করবেন: new_pg_dump -h 192.168.9.88 -U পোস্টগ্র্যাস ডাটাবেস



1

ডাটাবেসটি যদি অন্য কোনও মেশিনে ইনস্টল করা থাকে তবে সম্ভবত এটির pg_dump এর সঠিক সংস্করণ ইনস্টল করা আছে। এর অর্থ আপনি পিএস_ডাম্প কমান্ডটি এসএসএইচ দিয়ে দূরবর্তীভাবে চালিত করতে পারেন: ssh username@dbserver pg_dump books > books.out

আপনি পাসওয়ার্ডহীন সম্পাদনের জন্য সর্বজনীন কী প্রমাণীকরণও ব্যবহার করতে পারেন। এটি অর্জনের পদক্ষেপগুলি:

  1. Ssh-keygen কমান্ডের সাহায্যে একজোড়া কী তৈরি করুন (এখনও না হয়ে থাকলে)।
  2. ডাটাবেস সার্ভারে সর্বজনীন কী অনুলিপি করুন, সাধারণত ~ / .ssh / অনুমোদিত_কিগুলি।
  3. সংযোগটি ssh কমান্ডের সাথে কাজ করে কিনা তা পরীক্ষা করুন।

1

ঠিক আছে, আমার দুটি পোস্টগ্রিস ভার্সন ইনস্টল হওয়ার সাথে সাথে আমারও একই সমস্যা ছিল।

কেবল যথাযথ pg_dump ব্যবহার করুন এবং আপনার ক্ষেত্রে আপনার কোনও পরিবর্তন করার দরকার নেই:

 $> /usr/lib/postgresql/9.2/bin/pg_dump books > books.out

0

আপনি যদি হেরোকুর পোস্টগ্রিস ব্যবহার করছেন appপেজ_ডাম্প (অন্যান্য সমস্ত বাইনারি সহ) এতে রয়েছে /Applications/Postgres.app/Contents/MacOS/bin/

সুতরাং যে ক্ষেত্রে এটি

ln -s /Applications/Postgres.app/Contents/MacOS/bin/pg_dump /usr/local/bin/pg_dump

অথবা

ln -s /Applications/Postgres.app/Contents/MacOS/bin/* /usr/local/bin/.

শুধু তাদের সব দখল


0

ম্যাক্সের জন্য, find / -name pg_dump -type f 2>/dev/nullপিজি_ডাম্পের অবস্থানটি সন্ধান করুন

আমার জন্য, আমি নিম্নলিখিত ফলাফলগুলি পেয়েছি:

Applications/Postgres.app/Contents/Versions/9.5/bin/pg_dump
/usr/local/Cellar/postgresql/9.4.5_2/bin/pg_dump

আপনি যদি ব্যবহার করতে না চান তবে sudo ln -s new_pg_dump old_pg_dump --forceকেবল ব্যবহার করুন:

Applications/Postgres.app/Contents/Versions/9.5/bin/pg_dumppg_dumpআপনার টার্মিনালের সাথে প্রতিস্থাপন

উদাহরণ স্বরূপ:

Applications/Postgres.app/Contents/Versions/9.5/bin/pg_dump books > books.out

এটা আমার জন্য কাজ করে!


0

উপযুক্ত পোস্টগ্র্যাস সংস্করণটি এখানে ডাউনলোড করুন:

https://www.postgresql.org/download/

নিম্নলিখিত কমান্ডগুলি চালনার বিষয়ে নিশ্চিত হন (postgresql.org/ ডাউনলোড ইউআরএল আপনার ব্যবহারের জন্য নির্দিষ্ট ইউআরএল তৈরি করবে; আমি নীচের যেটি ব্যবহার করি সেটি সেন্টোস 7 এর উদাহরণ হিসাবে) sudo হিসাবে:

sudo yum install https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm
sudo yum install postgresql11-server

আপনার pg_dump সংস্করণ এখন আপডেট করা উচিত, pg_dump -V দিয়ে যাচাই করুন


-6

আমি আমার ফেডোরা 17 ইনস্টলেশনতে অনুরূপ সমস্যা পেয়েছি। ইস্যুটি ঘুরে দেখার জন্য আমি এটিই করেছি

  • Builtin মুছুন pg_dump/usr/bin/pg_dump(root পরিচয়ে: "RM, / usr / বিন / pg_dump")
  • এখন পোস্টগ্র্যাস্কল ইনস্টলেশনটির একটি প্রতীকী লিঙ্ক তৈরি করুন

    আবার মূল হিসাবে ln -s /usr/pgsql-9.2/bin/pg_dump /usr/bin/pg_dump

কৌতুক করা উচিত


9
নননো, কেবল প্যাকেজ পরিচালিত ফাইলগুলি মুছবেন না! যদি এর /usr/(বদলে /usr/local/, /home/বা /opt/, যেখানে কিছু মোছার সাধারণত ঠিক আছে) আপনি সত্যিই - প্যাকেজ ম্যানেজার ব্যবহার করতে হবে rpm& yumবা dpkgএবং apt-getবা aptitude, ডিস্ট্রো-নির্ভর করে। হয় প্যাকেজটি আনইনস্টল করুন rpmবা আপনার PATHপরিবেশের পরিবর্তনশীলটিকে আপনার মধ্যে পরিবর্তন করুন .bash_profileযাতে নতুন সংস্করণটি প্রথম পাওয়া যায়। আপনি যদি প্যাকেজ পরিচালনার অধীনে কিছু নিয়ে সন্দেহ করছেন তবে rpm -qf /path/to/file(RPM) বা dpkg -S /path/to/file(dpkg) ব্যবহার করুন
ক্রেগ রিঞ্জার
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.