¿Cómo actualizo la base de datos postgresl? Error de incompatibilidad

26

Instalé postgresql a través de Homebrew.

Tengo el siguiente problema después de la actualización:

FATAL: database files are incompatible with server DETAIL: The data directory was initialized by PostgreSQL version 9.0, which is not compatible with this version 9.1.2.

¿Algún consejo sobre cómo actualizar? Intenté lo siguiente:

$ pg_upgrade -d /usr/local/var/postgres/ -D /usr/local/var/postgres -b 
/usr/local/Cellar/postgresql/9.0.4/bin -B /usr/local/Cellar/postgresql/9.1.2/bin

No funcionó. Aquí está la salida.

Performing Consistency Checks
Checking current, bin, and data directories                 ok
Checking cluster versions                                   
This utility can only upgrade to PostgreSQL version 9.1.
Failure, exiting

error.

Daniel Fischer
fuente

Respuestas:

36

Para mí en OS X con Homebrew fue así.

  1. Instalé nuevos postgres con Homebrew (comencé a recibir el error)
  2. mv /usr/local/var/postgres /usr/local/var/postgres.old
  3. initdb -D /usr/local/var/postgres
  4. pg_upgrade -b /usr/local/Cellar/postgresql/9.0.4/bin -B /usr/local/Cellar/postgresql/9.1.2/bin -d /usr/local/var/postgres.old -D /usr/local/var/postgres
  5. ./delete_old_cluster.sh (este script se crea automáticamente en el directorio actual cuando realiza los pasos anteriores)
  6. rm delete_old_cluster.sh
Max Chernyak
fuente
Fantástico y justo lo que necesitaba amigo! Gracias. Espeically después de una actualización de Lion que viene de Snow Leopard. Compruebe el server.log google people !!
pjammer
Esto funcionó perfectamente para mí, ¡gracias! Tenga en cuenta que postgres no deben ejecutar antes de realizar estos pasos, por lo que si ha instalado a través de Homebrew asegúrese de descargar el agente de lanzamiento que hace que se inicia automáticamente: launchctl unload ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist. Después de completar todos los pasos anteriores, simplemente cárguelo nuevamente:launchctl load ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist
Markus Amalthea Magnuson
6

Así es como lo hice en fedora:

  • cambie el nombre de su antiguo directorio de datos a algo como data.old
  • ejecutar postgresql-setup initdbesto creará un nuevo directorio de datos
  • entonces corre pg_upgrade -b /usr/lib64/pgsql/postgresql-9.0/bin/ -B /usr/bin/ -d data.old/ -D data

Creo que para ti eso sería:

pg_upgrade -b /usr/local/Cellar/postgresql/9.0.4/bin -B /usr/bin/ -d /usr/local/var/postgres.old/ -D /usr/local/var/postgres/
  • también desea copiar pg_hba.conf y postgresql.conf de data.old al nuevo directorio de datos.
  • reiniciar postgresql
imel96
fuente
1

Perdí / olvidé la línea "initdb"

initdb -D / usr / local / var / postgres

Después de que se creó la base de datos, pg_upgrade funcionó en mi sistema de Windows.

usuario321204
fuente
0

Para Arch Linux , hay una solución en la wiki que funcionó bien para mí:

pacman -S --needed postgresql-old-upgrade
su -
su - postgres -c 'mv /var/lib/postgres/data /var/lib/postgres/data-9.2'
su - postgres -c 'mkdir /var/lib/postgres/data'
su - postgres -c 'initdb --locale en_US.UTF-8 -E UTF8 -D /var/lib/postgres/data'
su - postgres -c 'pg_upgrade -b /opt/pgsql-9.2/bin/ -B /usr/bin/ -d /var/lib/postgres/data-9.2 -D /var/lib/postgres/data'
Rudy Matela
fuente