cerveza casera. No se puede iniciar el servicio. obtener "Bootstrap falló: 5: error de entrada/salida - Postgres - Mac

Estoy tratando de reinstalar Postgres a través de home-brew en Mac. Desinstalé Postgres, actualicé home-brew y ejecuté el comando de instalación parabrew install postgres

cuando corrobrew services start postgresql

Recibo el siguiente mensaje de error:

Bootstrap falló: 5: error de entrada/salida Error: falla al ejecutar; /bin/launchctl bootstrap gui/501 /Users/edac/Library/LaunchAgents/homebrew.mxcl.postgresql.plistsalió con 5.

Cuando intento iniciar un servidor a través de la aplicación de 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 listo para comenzar. No estoy seguro de qué salió mal.

Ya tiene bases de datos en su sistema. Si todavía los necesita, eche un vistazo a postgresql.org/docs/current/pgupgrade.html

Respuestas (5)

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

/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: ¿Le importan sus datos?

De lo contrario, simplemente puede eliminar 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

De lo contrario, debe instalar postgresql@13 y realizar una migración de la base de datos, que se puede resumir de la siguiente manera:

instale postgres anteriores, asegúrese de que esté detenido

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

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

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

mueva los datos antiguos a la carpeta de controladores compatibles:

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

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

cd /usr/local/var

Construya una nueva base de datos en blanco, con configuración regional C, codificación de UTF8

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

Realice la actualización en sí:

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 es así (p. ej., la configuración regional o la codificación son incorrectas), elija la configuración regional y la codificación que coincidan con la base de datos.

Finalmente reinicie el servicio de postgres:

brew services start postgresql

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

Cuando actualiza su 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

Entonces, lo único que debe hacer es ejecutar el siguiente comando:

brew postgresql-upgrade-database

Y, por supuesto, debe reiniciar el servicio:

brew services restart postgresql

Si quiere asegurarse de que funcionó, también puede ejecutar el comando de inicio:

brew services start postgresql
genial: no me di cuenta de que había un ayudante de preparación para esto
Tuve que ejecutar el comando dos veces, pero este es el que lo arregló.

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

Después de revisar los puertos y probar todas las soluciones posibles, decidí mirar 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 estaba en postmaster.pid, así que lo eliminé:

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

Comenzó el servicio de postgres nuevamente:

brew services start postgresql@11

¡y voilá! Funcionó.

Esto también funcionó para mí. Tenía el mismo problema, postgres no funcionaba después de que mi MacBook se apagara abruptamente. La ubicación de mi archivo pid era/opt/homebrew/var/postgres/postmaster.pid

Parece que postgresqlya se inició antes de ejecutar el comando de inicio.

Así que reinícielo en lugar de comenzar, con el siguiente comando:

brew services restart postgresql

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 servicios de inicio y funcionó.

brew services start postgresql
Esto funcionó para mí. El problema que estaba teniendo era que seguía queriendo ejecutarse como usuario raíz. /usr/local/var/log/postgres.log dijo que la ejecución "raíz" del servidor PostgreSQL no está permitida. El servidor debe iniciarse con una ID de usuario sin privilegios para evitar un posible compromiso de seguridad del sistema. Consulte la documentación para obtener más información sobre cómo iniciar correctamente el servidor. Al seguir estos pasos, permita que "brew services start postgresql" funcione ejecutándose como yo en lugar de root por alguna razón.