Já se passaram alguns meses desde a última vez que usei o PostgreSQL no meu desktop Arch Linux e, aparentemente, depois de algumas atualizações, algo deve ter quebrado. Se eu perguntar o status do serviço, recebo ( systemctl status postgresql
):
× postgresql.service - PostgreSQL database server
Loaded: loaded (/usr/lib/systemd/system/postgresql.service; enabled; preset: disabled)
Active: failed (Result: exit-code) since Wed 2024-02-21 16:00:22 -03; 1h 28min ago
CPU: 54ms
fev 21 16:00:22 phili systemd[1]: Starting PostgreSQL database server...
fev 21 16:00:22 phili postgres[11667]: An old version of the database format was found.
fev 21 16:00:22 phili postgres[11667]: See https://wiki.archlinux.org/index.php/PostgreSQL#>
fev 21 16:00:22 phili systemd[1]: postgresql.service: Control process exited, code=exited, >
fev 21 16:00:22 phili systemd[1]: postgresql.service: Failed with result 'exit-code'.
fev 21 16:00:22 phili systemd[1]: Failed to start PostgreSQL database server.
Já tentei reinstalar de várias maneiras. Mas principalmente com algo assim:
pacman -Rsn postgresql
rm -rf /var/lib/postgres
pacman -Syu postgresql
A versão que estou instalando é a mais recente, a 16, mas já tentei tudo isso com a 14 também. E sim, tentei reiniciar meu PC várias vezes.
Quando você inicializa um banco de dados PostgreSQL, os dados do banco de dados são vinculados a essa versão principal do PostgreSQL.
Ao atualizar a versão principal do PostgreSQL, você precisa ter certeza de que os dados do banco de dados são compatíveis com a nova versão.
Arch Linux fornece uma entrada wiki exatamente para este cenário , as etapas são resumidas a seguir:
initdb
argumentos usados para criar o banco de dados inicialpostgresql.service
initdb
argumentos do banco de dados original.pg_upgrade
postgresql.service
Sem erros, seu servidor de banco de dados PostgreSQL agora deve estar funcionando com o banco de dados atualizado. Agora você pode limpar quaisquer dados antigos e diretórios temporários, se desejar.
Seguindo alguns comentários de @GracefulRestart, o que funcionou para mim no final foi seguir algumas das etapas da seção 8.1 :
pg_upgrade
postgresql-old-upgrade