Como atualizo o banco de dados postgresl? Erro de incompatibilidade

26

Eu instalei o postgresql via Homebrew.

Tenho o seguinte problema após a atualização:

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.

Alguma dica sobre como atualizar? Eu tentei o seguinte:

$ 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

Não deu certo. Aqui está a saída.

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

erro.

Daniel Fischer
fonte

Respostas:

36

Para mim, no OS X com o Homebrew, foi assim.

  1. Instalou novos postgres com o Homebrew (começou a receber o erro)
  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 (esse script é criado automaticamente para você no diretório atual quando você segue as etapas acima)
  6. rm delete_old_cluster.sh
Max Chernyak
fonte
Fantástico e exatamente o que eu precisava amigo! obrigado. Espeicamente após uma atualização do Lion vinda do Snow Leopard. Verifique o server.log google pessoal !!
pjammer
Isso funcionou perfeitamente para mim, obrigado! Note-se que postgres não deve estar em execução antes de fazer estes passos, por isso, se você instalou-lo através Homebrew certifique-se para descarregar o agente de lançamento que faz com que seja iniciado automaticamente: launchctl unload ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist. Depois que todas as etapas acima estiverem concluídas, basta carregá-lo novamente:launchctl load ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist
Markus Amalthea Magnuson
6

Aqui está como eu fiz isso no fedora:

  • renomeie seu diretório de dados antigo para algo como data.old
  • executar postgresql-setup initdbisso criará um novo diretório de dados
  • então corra pg_upgrade -b /usr/lib64/pgsql/postgresql-9.0/bin/ -B /usr/bin/ -d data.old/ -D data

Eu acho que para você seria:

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/
  • você também deseja copiar pg_hba.conf e postgresql.conf de data.old para o novo diretório de dados.
  • reinicie o postgresql
imel96
fonte
1

Perdi / esqueci a linha "initdb"

initdb -D / usr / local / var / postgres

Após a criação do banco de dados, o pg_upgrade funcionou no meu sistema Windows.

user321204
fonte
0

Para o Arch Linux , há uma solução no wiki que funcionou bem para mim:

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
fonte