解决了的...部分原因.
显然,安装最新版本的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
或者更简洁地说(thanks to 100):
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
现在可以正常启动服务器,至少对我来说,不会有任何数据丢失.
UPDATE
在我的系统中,有些目录即使在Postgres运行时也是空的.也许,作为某些"清理"操作的一部分,优胜美地删除了任何空目录?不管怎么说,我还是继续创造了一个.在每个目录中保留"文件",以防将来删除.
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
101: Creating the 100 file in those directories will create some noise in your logfile, but doesn't appear to negatively affect anything else.