Rozwiązany... częściowo.
Najwyraźniej zainstalowanie najnowszych wersji OS X (np. Yosemite lub El Capitan) usuwa niektóre katalogi w /usr/local/var/postgres
.
Aby to naprawić, wystarczy odtworzyć brakujące katalogi:
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
Lub bardziej zwięźle (dzięki 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}}
Ponowne uruchamianie pg_ctl start -D /usr/local/var/postgres
teraz uruchamia serwer normalnie i, przynajmniej dla mnie, bez utraty danych.
AKTUALIZUJ
W moim systemie niektóre z tych katalogów są puste, nawet gdy Postgres jest uruchomiony. Może w ramach jakiejś operacji „czyszczącej” Yosemite usuwa puste katalogi? W każdym razie poszedłem dalej i utworzyłem plik „.keep” w każdym katalogu, aby zapobiec przyszłemu usunięciu.
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
Uwaga :Tworzenie .keep
plik w tych katalogach spowoduje pewien szum w pliku dziennika, ale nie wydaje się, aby miał negatywny wpływ na nic innego.