Descargué Portainer en mi servidor y creé una base de datos PostgreSQL en un contenedor allí. Hoy ya no pude acceder a la base de datos. El registro muestra un mensaje de que hay un problema de versión.
Ya leí algunos problemas similares, como que el contenedor de Postgres falla con "los archivos de la base de datos son incompatibles con el servidor" después de que la imagen del contenedor se actualizó a la última y el contenedor de Postgres falla con "los archivos de la base de datos son incompatibles con el servidor" después de que la imagen del contenedor se actualizó a el último
y las soluciones brew postgresql-upgrade-database
no funcionaron.
¿Que puedo hacer?
INICIAR SESIÓN
2021-10-03 [1] FATAL: database files are incompatible with server 2021-10-03 [1] DETAIL: The data directory was initialized by PostgreSQL version 13, which is not compatible with this version 14.0 (Debian 14.0-1.pgdg110+1). PostgreSQL Database directory appears to contain a database; Skipping initialization
También encontré este https://www.postgresql.org/docs/14/upgrading.html pero los comandos no funcionaron. ¿Necesito hacer esto en el contenedor de alguna manera, o qué comandos funcionarán para que siga funcionando en el contenedor?
También estaba enfrentando el mismo problema con postgres en keycloak. Bajar la versión a 13 resolvió mi problema.
lo resolvi por
Suponiendo que conoce los comandos de la ventana acoplable para el paso anterior.
Creo que por la diferencia postgresql13 con 14 en la inicialización. Puede hacer una copia de seguridad de su base de datos antes de la nueva versión, eliminarla y migrar la base de datos a la nueva versión
por ejemplo en django:
dump: ./manage.py dumpdata -o mydata.json load: ./manage.py loaddata mydata.json
django: Por supuesto, si tiene información importante, hágalo por separado para cada modelo y preste atención a las dependencias al cargar.
Debe actualizar el archivo de datos al nuevo formato con este comando:
$ brew postgresql-upgrade-database
para mí, el directorio de la base de datos estaba en /tmp/db y como no había datos importantes, eliminé todo y todo funcionó bien ...
pero si sus datos son importantes, lea estos:
Además de la respuesta que sugiere eliminar todos los volúmenes/imágenes/contenedores, si tiene un volumen compartido para la base de datos en docker-compose.yml
, como:
db: image: postgres:14.1-alpine volumes: - ./tmp/db:/var/lib/postgresql/data
También deberá eliminar los datos de volumen asignados de Postgres que se encuentran en ./tmp/db
. De lo contrario, esos archivos en conflicto aún estarían allí.
Si no le importan los datos, utiliza la base de datos para fines de desarrollo y podrá volver a crear la base de datos fácilmente, simplemente ejecute rm -r ./tmp/db
. Entonces puede simplemente docker-compose up
y volver a crear su base de datos.
En caso de que le interesen los datos, use pg_dumpall
para volcar sus datos antes de eliminar los archivos y restaurarlos después de ejecutar docker-compose up
y su servicio de postgres esté listo nuevamente.
tuve un problema después de correr
brew update
brew upgrade
Brew actualizó postgresql
a 14, lo que me dio
psql: could not connect to server: No such file or directory Is the server running locally and accepting connections on Unix domain socket "/var/run/postgresql/.s.PGSQL.5432"?
También he visto el mismo error que tienes al inspeccionar
tail /usr/local/var/postgres/server.log
He bajado a la versión 13 en ejecución
brew uninstall postgresql
brew install postgresql@13
echo 'export PATH="/usr/local/opt/postgresql@13/bin:$PATH"' >> ~/.zshrc
y el comando que he usado para iniciar la base de datos nuevamente es
pg_ctl -D /usr/local/var/postgres -l /usr/local/var/postgres/server.log start