PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

`pg_tblspc` ausente após a instalação da versão mais recente do OS X (Yosemite ou El Capitan)


Resolvido... em parte.

Aparentemente, a instalação das versões mais recentes do OS X (por exemplo, Yosemite ou El Capitan) remove alguns diretórios em /usr/local/var/postgres .

Para corrigir isso, basta recriar os diretórios ausentes:
mkdir -p /usr/local/var/postgres/pg_commit_ts
mkdir -p /usr/local/var/postgres/pg_dynshmem
mkdir -p /usr/local/var/postgres/pg_logical/mappings
mkdir -p /usr/local/var/postgres/pg_logical/snapshots
mkdir -p /usr/local/var/postgres/pg_replslot
mkdir -p /usr/local/var/postgres/pg_serial
mkdir -p /usr/local/var/postgres/pg_snapshots
mkdir -p /usr/local/var/postgres/pg_stat
mkdir -p /usr/local/var/postgres/pg_stat_tmp
mkdir -p /usr/local/var/postgres/pg_tblspc
mkdir -p /usr/local/var/postgres/pg_twophase

Ou, de forma mais concisa (graças a Nate ):
mkdir -p /usr/local/var/postgres/{{pg_commit_ts,pg_dynshmem,pg_replslot,pg_serial,pg_snapshots,pg_stat,pg_stat_tmp,pg_tblspc,pg_twophase},pg_logical/{mappings,snapshots}}

Reexecutando pg_ctl start -D /usr/local/var/postgres agora inicia o servidor normalmente e, pelo menos para mim, sem perda de dados.

ATUALIZAÇÃO

No meu sistema, alguns desses diretórios estão vazios mesmo quando o Postgres está em execução. Talvez, como parte de alguma operação de "limpeza", o Yosemite remova todos os diretórios vazios? De qualquer forma, fui em frente e criei um arquivo '.keep' em cada diretório para evitar a exclusão futura.
touch /usr/local/var/postgres/{{pg_commit_ts,pg_dynshmem,pg_replslot,pg_serial,pg_snapshots,pg_stat,pg_stat_tmp,pg_tblspc,pg_twophase},pg_logical/{mappings,snapshots}}/.keep

Observação :Criando o .keep arquivo nesses diretórios criará algum ruído em seu arquivo de log, mas não parece afetar negativamente qualquer outra coisa.