Vyřešeno... částečně.
Instalace nejnovějších verzí OS X (např. Yosemite nebo El Capitan) zjevně odstraní některé adresáře v /usr/local/var/postgres
.
Chcete-li to opravit, jednoduše znovu vytvořte chybějící adresáře:
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
Nebo stručněji (díky 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}}
Opětovné spuštění pg_ctl start -D /usr/local/var/postgres
nyní spouští server normálně a, alespoň pro mě, bez ztráty dat.
AKTUALIZACE
V mém systému jsou některé z těchto adresářů prázdné, i když běží Postgres. Možná v rámci nějaké „čistící“ operace Yosemite odstraní všechny prázdné adresáře? V každém případě jsem pokračoval a vytvořil jsem v každém adresáři soubor '.keep', abych zabránil budoucímu smazání.
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
Poznámka :Vytvoření .keep
soubor v těchto adresářích vytvoří nějaký šum ve vašem logfile, ale nezdá se, že by negativně ovlivnil něco jiného.