27 votes

homebrew. Impossible de démarrer le service, il y a "Bootstrap failed : 5 : Erreur d'entrée/sortie - Postgres - Mac

J'essaie de réinstaller Postgres via home-brew sur Mac. J'ai désinstallé Postgres, mis à jour home-brew et exécuté la commande install pour brew install postgres

quand je cours brew services start postgresql

J'obtiens le message d'erreur suivant :

L'amorçage a échoué : 5 : Erreur d'entrée/sortie Erreur : Échec lors de l'exécution ; /bin/launchctl bootstrap gui/501 /Users/edac/Library/LaunchAgents/homebrew.mxcl.postgresql.plist est sorti avec 5.

Lorsque j'essaie de démarrer un serveur via l'application Postgres, je reçois ce message :

Required PostgreSQL version not installed

The data directory was initialized with PostgreSQL 13.

This copy of Postgres.app includes the following PostgreSQL versions: 14.

Please try downloading a different release of Postgres.app.

à l'origine, lorsque j'ai installé Postgres, tout ce que j'ai fait, c'est de lancer le client maison et d'installer l'application, et j'étais prêt à partir. Je ne sais pas ce qui a mal tourné.

30voto

Esko Luontola Points 53877

Le problème est que l'installation précédente de postgres était postgres 13, et qu'elle a créé une base de données sous :

/usr/local/var/postgres

qui est maintenant incompatible avec la version de postgres que vous installez, qui est la version 14.

Première question : Vous souciez-vous de vos données ?

Si ce n'est pas le cas, vous pouvez simplement supprimer ce dossier et essayer de redémarrer le service.

pour supprimer et redémarrer le service :

rm -rf /usr/local/var/postgres
initdb --locale=C -E UTF8 /usr/local/var/postgres
brew services start postgresql

Sinon, vous devez installer postgresql@13 et effectuer une migration de base de données, qui peut être résumée comme suit :

installer un postgres plus ancien, s'assurer qu'il est arrêté

brew install postgresql@13
brew services stop postgresql@13
brew services stop postgres

supprimer la base de données postgres 13 créée par l'installation de postgresql@13

rm -rf /usr/local/var/postgresql@13

déplacer les anciennes données dans le dossier des pilotes compatibles :

mv /usr/local/var/postgres /usr/local/var/postgresql@13

Nous procédons maintenant à la mise à niveau. Tout d'abord, accédez au dossier de la base de données

cd /usr/local/var

Construire une nouvelle base de données vierge, avec la locale C, l'encodage UTF8

initdb --locale=C -E UTF8 -D postgres

Effectuer la mise à niveau elle-même :

pg_upgrade -d postgresql@13 -D postgres -b /usr/local/Cellar/postgresql@13/13.4/bin -B /usr/local/Cellar/postgresql/14.0/bin -v

Cette démarche devrait être couronnée de succès. Si ce n'est pas le cas (par exemple, la locale ou l'encodage est incorrect), choisissez la locale et l'encodage qui correspondent à la base de données.

Enfin, redémarrez le service postgres :

brew services start postgresql

17voto

methodin Points 3994

Le problème est en fait ce que @Petesh a dit. Mais pour moi, la solution était plus simple.

Lorsque vous mettez à jour votre postgresql avec brew, un message de succès est affiché. Une chose enregistrée sera :

To migrate existing data from a previous major version of PostgreSQL run:
  brew postgresql-upgrade-database

La seule chose à faire est donc d'exécuter la commande ci-dessous :

brew postgresql-upgrade-database

Et bien sûr, vous devez redémarrer le service :

brew services restart postgresql

Si vous voulez vous assurer que cela a fonctionné, vous pouvez également exécuter la commande de démarrage :

brew services start postgresql

10voto

J'ai rencontré un problème similaire avec postgresql 11 et le redémarrage du service n'a pas aidé. Le problème est apparu lorsque mon MacBook a redémarré brusquement.

Après avoir vérifié les ports et essayé toutes les solutions possibles, j'ai décidé de consulter les journaux.

tail -n 100 /usr/local/var/log/postgresql@11.log

Cela m'a permis d'obtenir les 100 dernières lignes du journal où j'ai trouvé ceci :

FATAL:  lock file "postmaster.pid" already exists
HINT:  Is another postmaster (PID 479) running in data directory "/usr/local/var/postgresql@11"?

Il est clair que le problème se situe au niveau de postmaster.pid, je l'ai donc supprimé :

rm /usr/local/var/postgresql@11/postmaster.pid

J'ai redémarré le service postgres :

brew services start postgresql@11

et voilà ! Cela a fonctionné.

2voto

Md Aman Ullah Points 111

Il semble que le postgresql est déjà démarré avant l'exécution de la commande start.

Il faut donc le redémarrer au lieu de le démarrer, par la commande suivante :

brew services restart postgresql

2voto

eillarra Points 1126

J'avais ceci pour les Apaches. Pour y remédier, j'ai déchargé le fichier plist. Dans votre cas

launchctl unload /Users/edac/Library/LaunchAgents/homebrew.mxcl.postgresql.plist
launchctl load /Users/edac/Library/LaunchAgents/homebrew.mxcl.postgresql.plist

J'ai ensuite relancé la commande start services et cela a fonctionné.

brew services start postgresql

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X