12 votos

casero. No se puede iniciar el servicio. Obtiene "Bootstrap falló: 5: Error de entrada/salida - Postgres - Mac

Estoy intentando reinstalar Postgres vía home-brew en Mac. Desinstalé Postgres, actualicé home-brew y ejecuté el comando de instalación de brew install postgres

cuando corro brew services start postgresql

Me aparece el siguiente mensaje de error:

El arranque ha fallado: 5: Error de entrada/salida Error: Fallo durante la ejecución; /bin/launchctl bootstrap gui/501 /Users/edac/Library/LaunchAgents/homebrew.mxcl.postgresql.plist salió con 5.

Cuando intento iniciar un servidor a través de la aplicación Postgres recibo este mensaje:

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.

originalmente cuando instalé Postgres todo lo que hice fue ejecutar el cli casero e instalar la aplicación y estaba bien para ir. No estoy seguro de lo que ha ido mal.

22voto

Esko Luontola Puntos 53877

El problema es que la instalación anterior de postgres era postgres 13, y creó una base de datos bajo:

/usr/local/var/postgres

que ahora es incompatible con la versión de postgres que está instalando, que es la versión 14.

Primera pregunta: ¿Te importan tus datos?

Si no es así, puede simplemente borrar esa carpeta e intentar reiniciar el servicio.

para eliminar y reiniciar el servicio hacer:

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

Si no es así, hay que instalar postgresql@13, y realizar una migración de la base de datos, que se puede resumir así:

instalar postgres antiguo, asegúrese de que está parado

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

eliminar la base de datos postgres 13 creada por la instalación de postgresql@13

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

mover los datos antiguos a la carpeta de controladores compatibles:

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

Ahora hacemos la actualización. Primero cd a la carpeta de la base de datos

cd /usr/local/var

Construir una nueva base de datos en blanco, con locale C, codificación de UTF8

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

Realice la actualización en sí misma:

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

Esto debería terminar con éxito. Si no lo hace (por ejemplo, la configuración regional/codificación es incorrecta), elija la configuración regional y la codificación que coincida con la base de datos.

Finalmente reinicie el servicio postgres:

brew services start postgresql

12voto

methodin Puntos 3994

El problema es realmente lo que dijo @Petesh. Pero, la resolución para mí fue más simple.

Cuando actualizas tu postgresql con brew, registra un mensaje de éxito. Una cosa registrada será:

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

Así que lo único que tienes que hacer es ejecutar el siguiente comando:

brew postgresql-upgrade-database

Y, por supuesto, hay que reiniciar el servicio:

brew services restart postgresql

Si quieres asegurarte de que ha funcionado, puedes ejecutar también el comando de inicio:

brew services start postgresql

4voto

Me encontré con un problema similar con postgresql 11 y reiniciar el servicio no ayudó. El problema surgió cuando mi MacBook se reinició bruscamente.

Después de comprobar los puertos y probar todas las soluciones posibles, decidí buscar en los registros.

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

Esto me dio las últimas 100 líneas del registro donde encontré esto:

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

Claramente, el problema era con postmaster.pid así que lo borré:

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

Inicié el servicio postgres de nuevo:

brew services start postgresql@11

y ¡voilá! Funcionó.

2voto

Md Aman Ullah Puntos 101

Parece que el postgresql ya está iniciado antes de ejecutar el comando de inicio.

Así que reinícialo en lugar de iniciarlo, mediante el siguiente comando:

brew services restart postgresql

2voto

eillarra Puntos 1126

Tenía esto para Apache. Para solucionarlo, descargué el archivo plist. En tu caso

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

Luego volví a ejecutar el comando de inicio de servicios y funcionó.

brew services start postgresql

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X