我在我的 OS X 中使用 Homebrew 软件中的 postgres,但是当我重新启动我的系统时,有时 postgres 在重新启动后不会启动,所以我手动尝试使用 postgres -D/usr/local 启动它/var/postgres
,但随后出现错误并显示以下消息:FATAL: could not open directory "pg_tblspc": No such file or directory
。
上次出现的时候,我无法恢复到原来的状态,所以我决定卸载整个postgres系统,然后重新安装它并创建用户,表,数据集等......就是这样恶心,但它经常在我的系统上发生,比如几个月一次。
那么为什么它会频繁丢失pg_tblspc
文件呢?我可以做些什么来避免文件丢失?
我还没有将我的 Homebrew 软件和 postgres 升级到最新版本(即我一直在使用相同的版本)。此外,我在 postgres 数据库上所做的所有事情都是删除表并每天填充新数据。我没有更改用户、密码等...
编辑(mbannert): 我觉得有必要添加这个,因为该线程是这个问题在谷歌上的热门话题,而且对于许多人来说,症状是不同的。 Homebrewers 可能会遇到此错误消息:
No such file or directory
Is the server running locally and accepting
connections on Unix domain socket "/tmp/.s.PGSQL.5432"?
因此,如果您在 Yosemite 升级后刚刚经历过这种情况,那么您现在可以阅读此主题。
最佳答案
部分解决...
显然,安装最新版本的 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 正在运行,其中一些目录也是空的。也许,作为某些“清理”操作的一部分,优胜美地删除了所有空目录?无论如何,我继续在每个目录中创建了一个“.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
文件会在您的日志文件中产生一些噪音,但似乎不会对其他任何内容产生负面影响。
关于macos - 安装最新版本的 OS X(Yosemite 或 El Capitan)后缺少 `pg_tblspc`,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25970132/