Postgres - FATAL: fichiers de base de données sont incompatibles avec le serveur
Après le redémarrage de mon MacBook Pro, je suis incapable de 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 logs et la ligne suivante s'affiche 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.
9.0.4 était la version qui est préinstallé sur le mac, 9.2[.4] est la version que j'ai installé via Homebrew.
Comme mentionné, cette habitude de travailler avant de le redémarrer, donc il ne peut pas réellement être un problème de compilation. J'ai aussi re-couru initdb /usr/local/var/postgres -E utf8
et le fichier existe toujours.
Malheureusement, je suis assez nouveau à Postgres, de sorte que toute aide serait très appréciée.
- Comment voulez-vous commencer postgres? Êtes-vous sûr que votre startscript points pour la nouvelle version? Parce que fondée sur les messages d'erreur je pense que les deux versions sont installées côte à côte maintenant.
pg_ctl -D /usr/local/var/postgres -l /usr/local/var/postgres/server.log start
- et la réponse estserver starting
- Lorsque vous recherchez des fichiers nommés
pg_ctl
je suis sûr que vous allez trouver 2 exemplaires. Et celui qui correspond àwhich pg_ctl
sera l'ancienne version, et l'autre sera la nouvelle version. - l'exécution de
pg_ctl --version
donnepg_ctl (PostgreSQL) 9.2.4
- Et pourtant, cette copie de pg_ctl semble être à partir d'un 9.0.4 postmaster... Avez-vous arrêter de postgres avant la mise à niveau via homebrew? Tel qu'il est, vous devriez probablement vous assurer que tous les processus postgres sont arrêtés et refaire l'installation de 9.2.4
ps aux | grep postgres
donne rien, et comme je l'ai mentionné, ça marchait très bien avant - et je doute que j'ai foiré l'installation. Vous pensez que la réinstallation est la meilleure façon de le faire?- oui, en tant que droit maintenant un 9.2.4 pg_ctl semble être à partir d'un 9.0.4 backend, et c'est certainement une mauvaise situation! Vous pourriez essayer de démêler le désordre manuellement, mais le réinstaller sur le dessus de la préexistants mélange de versions semble d'une certaine manière plus facile et plus l'épreuve des balles à faire (et que vous semblez avoir juste été initialisé, vous datadir, votre base de données est vide de toute façon, donc rien ne sera perdu).
- OK, merci beaucoup
- l'erreur existe, même après la réinstallation... je suis à bout de ressources 🙁
- Apple est de la folie de la décision de la pré-installation de PostgreSQL et de mettre leur version pré-installée sur le CHEMIN d'accès par défaut semble s'aggraver avec le temps...
- vraiment? Apple preinstalls postgresql?
- Assurez-vous alors. Je pense que maintenant ils ont déménagé à faisceau à l'intérieur de
Server.app
et il caché à utiliser un port non défini par défaut et le socket unix directory. Enfin!!!
Vous devez vous connecter pour publier un commentaire.
Si vous êtes sur Mac et récemment mis à jour à 11 au lieu de 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:
La commande ci-dessus est prise à partir de la sortie de
brew info postgres
brew postgresql-upgrade-database
puis redémarrez postgresbrew info
.Si vous êtes à la recherche de l'option nucléaire (effacer toutes les données et obtenir une nouvelle base de données), vous pouvez le faire:
rm -rf /usr/local/var/postgres && initdb /usr/local/var/postgres -E utf8
et ensuite, vous aurez besoin de
rake db:setup
etrake db:migrate
à partir de votre application Rails, pour obtenir le programme d'installation à nouveau.createuser -s your_rails_app
pour créer les rails' utilisateur postgres. Voir stackoverflow.com/questions/11919391/...Essayez ceci :
https://gist.github.com/joho/3735740
Il a fonctionné parfaitement pour moi.
En fin de compte, il génère également vous 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 à comprendre plus.
Trouvé sur internet, cette solution fonctionne bien pour moi.
Quand 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
Ok, permet de jeter un oeil dans les logs du serveur:
cat /usr/local/var/postgres/server.log
Nous avons besoin de suivre quelques étapes après la mise à jour de postgresql:
Que c'est.
Si vous souhaitez conserver la version précédente de postgres, utilisez
brew switch
:Sinon, considérez ce brassage de commande pour effectuer la migration des données:
brew postgresql-upgrade-database
. Découvrez le code source.Il s'est passé pour moi quand je tente de démarrer Postgres12 avec postgres11 volume monté. Tout simplement en supprimant le volume monté pour postgres11 et redémarrez a fonctionné pour moi.
Auparavant, j'ai été en utilisant:
J'ai supprimé le dossier /Utilisateurs/champ/postgres et redémarré postgres 12, à l'aide de