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.plist
salió 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.
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
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ó.
/opt/homebrew/var/postgres/postmaster.pid
Parece que postgresql
ya 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
sin ladera