it-swarm.dev

Postgres - FATAL: ملفات قاعدة البيانات غير متوافقة مع الخادم

بعد إعادة تشغيل MacBook Pro الخاص بي ، يتعذر علي بدء تشغيل خادم قاعدة البيانات:

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 هو الإصدار الذي تم تثبيته مسبقًا على نظام التشغيل mac ، 9.2 [.4] هو الإصدار الذي قمت بتثبيته عبر Homebrew. كما ذكرنا ، كان هذا يعمل قبل إعادة التشغيل ، لذلك لا يمكن أن يكون مشكلة في الواقع. قمت أيضًا بإعادة تشغيل initdb /usr/local/var/postgres -E utf8 ولا يزال الملف موجودًا.

لسوء الحظ ، أنا جديد على Postgres ، لذا فإن أي مساعدة ستكون موضع تقدير كبير.

94
klaffenboeck

إذا كنت تبحث عن الخيار النووي (حذف جميع البيانات والحصول على قاعدة بيانات جديدة) ، يمكنك القيام بما يلي:

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

ثم ستحتاج إلى rake db:setup و rake db:migrate من تطبيق Rails الخاص بك للحصول على الإعداد مرة أخرى.

146
Meekohi

إذا كنت تستخدم نظام Mac وتمت ترقيته مؤخرًا إلى 11 من 10.x ، فيمكنك تشغيل الأمر أدناه لترقية دليل بيانات postgres الخاص بك مع الاحتفاظ بجميع البيانات:

brew postgresql-upgrade-database

يؤخذ الأمر أعلاه من إخراج brew info postgres

96
Gowtham Gopalakrishnan

جرب هذا: https://Gist.github.com/joho/3735740

هي تعمل بشكل ممتاز من أجلي. في النهاية ، يقوم أيضًا بإنشاء نصين باشين للتحقق من قاعدة البيانات الخاصة بك وإزالة الكتلة القديمة. رائع حقا.

راجع: http://www.postgresql.org/docs/9.2/static/pgupgrade.html لفهم المزيد.

38
gdurelle

وجدت على شبكة الإنترنت ، وهذا الحل يعمل بشكل جيد بالنسبة لي.

عندما حاولت تشغيل خادم postgresql بعد الترقية إلى OS X 10.10 Yosemite ، واجهت مشكلة التالية:

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.

لذلك ، نحن بحاجة إلى اتباع بعض الخطوات بعد الترقية postgresql:

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

هذا هو.

8
Gianluca Musa

إذا كنت تريد الاحتفاظ بالإصدار السابق من postgres ، فاستخدم 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 لترحيل البيانات الموجودة: brew postgresql-upgrade-database. تحقق من شفرة المصدر .

3
peresleguine