Решено... частично.
Очевидно инсталирането на най-новите версии на OS X (напр. Yosemite или El Capitan) премахва някои директории в /usr/local/var/postgres
.
За да поправите това, просто пресъздайте липсващите директории:
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
Или по-накратко (благодарение на 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}}
Повторно стартиране на pg_ctl start -D /usr/local/var/postgres
сега стартира сървъра нормално и, поне за мен, без загуба на данни.
АКТУАЛИЗИРАНЕ
В моята система някои от тези директории са празни дори когато работи Postgres. Може би, като част от някаква операция за "почистване", Yosemite премахва всякакви празни директории? Във всеки случай продължих и създадох файл „.keep“ във всяка директория, за да предотвратя бъдещо изтриване.
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
Забележка :Създаване на .keep
файл в тези директории ще създаде някакъв шум във вашия регистрационен файл, но изглежда няма да повлияе отрицателно на нищо друго.