Postgres - FATAL: ডাটাবেস ফাইলগুলি সার্ভারের সাথে বেমানান


185

আমার ম্যাকবুক প্রো পুনরায় চালু করার পরে আমি ডেটাবেস সার্ভার শুরু করতে অক্ষম:

could not connect to server: No such file or directory
Is the server running locally and accepting
connections on Unix domain socket "/tmp/.s.PGSQL.5432"?

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

FATAL:  database files are incompatible with server
DETAIL:  The data directory was initialized by PostgreSQL version 9.2, which is not compatible with this version 9.0.4.

9.0.4 হ'ল ম্যাকের উপর ইনস্টল করা সংস্করণটি ছিল, 9.2 [.4] হ্যামব্র্রুউয়ের মাধ্যমে আমি ইনস্টল করা সংস্করণ। উল্লিখিত হিসাবে, এটি পুনরায় আরম্ভের আগে কাজ করত, সুতরাং এটি আসলে সংকলনের সমস্যা হতে পারে না। আমি আবারও দৌড়েছি initdb /usr/local/var/postgres -E utf8এবং ফাইলটি এখনও বিদ্যমান।

দুর্ভাগ্যক্রমে, আমি পোস্টগ্র্রেসে বেশ নতুন, তাই যে কোনও সহায়তা খুব প্রশংসা হবে।


1
আপনি কিভাবে পোস্টগ্রিজ শুরু করবেন? আপনি কি নিশ্চিত যে আপনার সূচনালিপিটি নতুন সংস্করণে নির্দেশ করবে? কারণ ত্রুটি বার্তাগুলির ভিত্তিতে আমি মনে করি উভয় সংস্করণ পাশাপাশি এখন ইনস্টল করা আছে।
fvu

pg_ctl -D /usr/local/var/postgres -l /usr/local/var/postgres/server.log start- এবং প্রতিক্রিয়াটি হ'লserver starting
ক্লাফেনবোইক

1
আপনি যখন নামযুক্ত ফাইলগুলি অনুসন্ধান করেন তখন pg_ctl আমি নিশ্চিত যে আপনি 2 টি অনুলিপি খুঁজে পাবেন। আর যেটির সাথে মেলে which pg_ctlতার একটি হ'ল পুরানো সংস্করণ এবং অন্যটি হ'ল নতুন সংস্করণ।
fvu

চলমান pg_ctl --versionদেয়pg_ctl (PostgreSQL) 9.2.4
ক্লাফেনবোইক

2
@ ইভানক্রোল শিওর তখন করেছে। আমার মনে হয় এখন তারা এটিকে ভিতরে insideুকে এটিকে বান্ডিল করতে সরিয়ে নিয়েছে Server.appএবং এটি একটি ডিফল্ট পোর্ট এবং ইউনিক্স সকেট ডিরেক্টরি ব্যবহার করার জন্য লুকিয়ে রেখেছিল। অবশেষে!
ক্রেগ রিঞ্জার

উত্তর:


363

আপনি যদি সম্প্রতি 10.x থেকে 11 বা 12 এ আপগ্রেড হন তবে আপনি আপনার পোস্টগ্রিজ ডেটা ডিরেক্টরিতে সমস্ত ডেটা বজায় রেখে আপগ্রেড করতে নীচের কমান্ডটি চালাতে পারেন:

brew postgresql-upgrade-database

উপরের কমান্ডটি আউটপুট থেকে নেওয়া হয়েছে brew info postgres


2
এটি একটি কবজির মতো কাজ করেছে, তবে এটি কাজ করার পরে এটি একটি দ্বিতীয় ত্রুটি প্রবর্তন করেছে, আর ডিডিবি দ্বারা নির্মিত ডিবি আপগ্রেড করে পোস্টগ্রাগেস brew postgresql-upgrade-databaseপুনরায় চালু করে মনে রাখবেন
শেমনোগম্বে

9.5 থেকে 11 এও কাজ করেছেন। কীভাবে ব্যবহার করবেন তাও দেখানোর জন্য কুডোস brew info
ইয়্যাক

2
10 থেকে 11.5। তুমি একজন জীবন রক্ষাকারী. <3
টমাস

4
পাশাপাশি 11 থেকে 12 পর্যন্ত কাজ করে।
স্টিভেক্স

1
9.5 থেকে 12 পর্যন্ত কাজ করে !!
অগস্টো সামামা ব্যারিয়েন্টস

169

আপনি যদি পারমাণবিক বিকল্পের সন্ধান করছেন (সমস্ত ডেটা মুছুন এবং একটি নতুন ডাটাবেস পান), আপনি এটি করতে পারেন:

rm -rf /usr/local/var/postgres && initdb /usr/local/var/postgres -E utf8

এবং তারপরে আবার সেটআপ করার জন্য আপনাকে rake db:setupএবং rake db:migrateআপনার রেল অ্যাপ্লিকেশনটি থেকে প্রয়োজন।


3
যদি উপরেরটি এখনও কাজ না করে (যা আমার ক্ষেত্রে ছিল), তবে নতুন ডিজিটাল ডিরেক্টরি নামটি initdb দেওয়ার চেষ্টা করুন, উদাহরণস্বরূপ / usr / স্থানীয় / var / postgres95।
mpelzsherman

বিটিডব্লিউ, এর ঠিক পরে আপনার সম্ভবত createuser -s your_rails_appরেলের পোস্টগ্রিজ ব্যবহারকারী তৈরি করতে চালানো দরকার । দেখুন stackoverflow.com/questions/11919391/...
Meekohi

38

এটি ব্যবহার করে দেখুন: https://gist.github.com/joho/3735740

এটা আমার জন্য পুরোপুরি কাজ করেন। শেষ পর্যন্ত এটি আপনার ডিবি চেক করতে এবং পুরাতন গুচ্ছটি সরাতে আপনাকে 2 টি ব্যাশ স্ক্রিপ্ট তৈরি করে। সত্যিই অসাধারণ.

আরও দেখুন: http://www.postgresql.org/docs/9.2/static/pgupgrade.html দেখুন।


2
9.4 থেকে 9.5 পর্যন্ত মাইগ্রেশন নিয়ে আমার জন্য পুরোপুরি কাজ করেছেন।
tftdias

9.3.4 থেকে 9.5.2 এ মাইগ্রেশন নিয়েও আমার পক্ষে কাজ করেছে।
স্টিভ জর্জেনসেন

1
: এখানে 9.6.1 আপডেট 9.5.5 জন্য পদক্ষেপ Homebrew (MacOS) ব্যবহার করছেন gist.github.com/giannisp/b53a76047b07751ed3ade3c1db1d2c51
Giannis

এটি অবশ্যই সেরা উত্তর হওয়া উচিত !! এবং কোনও ডেটা ক্ষতি হয় না।
ফ্লোরিয়ানবি

9

ইন্টারনেটে পাওয়া গেছে, এই সমাধানটি আমার পক্ষে ভাল কাজ করে।

যখন আমি ওএস এক্স 10.10 ইয়োসেমাইটে আপগ্রেড করার পরে পোস্টগ্র্যাসকিএল সার্ভারটি শুরু করার চেষ্টা করেছি তখন আমি একটি পরবর্তী সমস্যার মুখোমুখি হয়েছি:

pg_ctl -D /usr/local/var/postgres -l /usr/local/var/postgres/server.log start

could not connect to server: No such file or directory
Is the server running locally and accepting
connections on Unix domain socket "/var/pgsql_socket/.s.PGSQL.5432"?

ঠিক আছে, সার্ভার লগগুলি একবার দেখে নেওয়া যাক:

cat /usr/local/var/postgres/server.log

FATAL: database files are incompatible with server
DETAIL: The data directory was initialized by PostgreSQL version 9.2, which is not compatible with this version 9.3.5.

সুতরাং, আমাদের আপগ্রেড পোস্টগ্র্যাস্কিলের পরে কয়েকটি পদক্ষেপ অনুসরণ করতে হবে:

launchctl unload -w ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist

mv /usr/local/var/postgres /usr/local/var/postgres92

brew update

brew upgrade postgresql

initdb /usr/local/var/postgres -E utf8

pg_upgrade -b /usr/local/Cellar/postgresql/9.2.3/bin -B /usr/local/Cellar/postgresql/9.3.5_1/bin -d /usr/local/var/postgres92 -D /usr/local/var/postgres

cp /usr/local/Cellar/postgresql/9.3.5_1/homebrew.mxcl.postgresql.plist ~/Library/LaunchAgents/

pg_ctl -D /usr/local/var/postgres -l /usr/local/var/postgres/server.log start

rm -rf /usr/local/var/postgres92

এটাই.


1
আমি 9.53 থেকে 10.0 এ আপগ্রেড করার জন্য উপরের পদক্ষেপগুলি ব্যবহার করেছি। পিজি_আপগ্রেড কমান্ডটি কিছুটা আপগ্রেড হয়েছে। নতুন কমান্ডটি হ'ল পিজি_আপগ্রেড-বি / ওএসআর / লোকাল / সেলার / পোস্টস্ট্রেসক্লল / .5 .৩.৩ / বিিন / -বি / ইউএসআর / লোকাল / সেলার / পোস্টস্ট্রেসক্লী.০০.০/bin -d / usr / স্থানীয় / ভার / পোস্টগ্রেস 95 -ডি / ইউএসআর / স্থানীয় / var / postgres
প্রযুক্তিবিদ

নীচের আরও ভাল সমাধান
গ্যাডি

8

আপনি যদি পোস্টগ্রিজের পূর্ববর্তী সংস্করণটি রাখতে চান তবে ব্যবহার করুন brew switch:

$ brew info postgresql

postgresql: stable 10.5 (bottled), HEAD
Object-relational database system
https://www.postgresql.org/
Conflicts with:
  postgres-xc (because postgresql and postgres-xc install the same binaries.)
/usr/local/Cellar/postgresql/9.6.3 (3,259 files, 36.6MB)
  Poured from bottle on 2017-07-09 at 22:15:41
/usr/local/Cellar/postgresql/10.5 (1,705 files, 20.8MB) *
  Poured from bottle on 2018-11-04 at 15:13:13

$ brew switch postgresql 9.6.3
$ brew services stop postgresql
$ brew services start postgresql

অন্যথায়, বিদ্যমান তথ্য স্থানান্তর করতে এই চোলাই কমান্ড বিবেচনা করুন: brew postgresql-upgrade-database। পরীক্ষা করে দেখুন সোর্স কোড


1

পোস্টগ্র্রেস 12 মাউন্ট করা ভলিউম দিয়ে পোস্টগ্রেস 12 শুরু করার চেষ্টা করার সময় এটি আমার জন্য হয়েছিল। পোস্টগ্র্রেস 11 এর জন্য মাউন্ট করা ভলিউমটি কেবল মুছে ফেলা এবং পুনরায় চালু করা আমার পক্ষে কাজ করেছে।

আগে আমি ব্যবহার করছিলাম:

docker run -d --name my_database -v /Users/champ/postgres:/var/lib/postgresql/data -p 54320:5432 postgres:11

আমি ব্যবহারকারীর / চ্যাম্প / পোস্টগ্র্যাগগুলি মুছে ফেলেছি এবং পোস্টগ্র্যাগ 12 পুনরায় চালু করেছি arted

docker run -d --name my_database -v /Users/champ/postgres:/var/lib/postgresql/data -p 54320:5432 postgres:12
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.