web-dev-qa-db-fra.com

Postgres - FATAL: les fichiers de base de données sont incompatibles avec le serveur

Après avoir redémarré mon MacBook Pro, je ne parviens pas à démarrer le serveur de base de données:

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"?

J'ai vérifié les journaux et la ligne suivante apparaît encore et encore:

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.

La version 9.0.4 était préinstallée sur le Mac, 9.2 [.4] est la version que j'ai installée via Homebrew. Comme mentionné précédemment, cela fonctionnait avant le redémarrage, il ne peut donc s'agir d'un problème de compilation. J'ai aussi relancé initdb /usr/local/var/postgres -E utf8 et le fichier existe toujours.

Malheureusement, je suis un nouveau venu chez Postgres, toute aide serait donc la bienvenue.

102
klaffenboeck

Si vous êtes sur Mac et que vous avez récemment mis à niveau la version 11 à partir de la version 10.x, vous pouvez exécuter la commande ci-dessous pour mettre à niveau votre répertoire de données postgres en conservant toutes les données:

brew postgresql-upgrade-database

La commande ci-dessus est extraite de la sortie de brew info postgres

144

Si vous recherchez l'option nucléaire (supprimer toutes les données et obtenir une nouvelle base de données), vous pouvez procéder comme suit:

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

et alors vous aurez besoin de rake db:setup et rake db:migrate de votre Rails pour obtenir à nouveau l’installation).

147
Meekohi

Essayez ceci: https://Gist.github.com/joho/373574

Cela a fonctionné parfaitement pour moi. En fin de compte, il génère également 2 scripts bash pour vérifier votre base de données et supprimer l’ancien cluster. Vraiment génial.

voir: http://www.postgresql.org/docs/9.2/static/pgupgrade.html pour en savoir plus.

38
gdurelle

Trouvé sur Internet, cette solution fonctionne bien pour moi.

Lorsque j'ai essayé de démarrer le serveur postgresql après la mise à niveau vers OS X 10.10 Yosemite, j'ai rencontré un problème suivant:

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"?

Ok, jetons un coup d'oeil dans les journaux du serveur:

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.

Nous devons donc suivre quelques étapes après la mise à niveau 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

C'est ça.

8
Gianluca Musa

Si vous voulez conserver la version précédente de postgres, utilisez 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

Sinon, considérez cette commande brew pour migrer les données existantes: brew postgresql-upgrade-database. Départ le code source .

4
peresleguine