macos - 安装最新版本的 OS X(Yosemite 或 El Capitan)后缺少 `pg_tblspc`

标签 macos postgresql homebrew osx-yosemite

我在我的 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/

相关文章:

java - OS 系统更新后 Eclipse 内部 Web 浏览器呈现不正确

mysql - 将 XML 文件转换为 SQL 数据库的自动化方法?

r - 如何在 R 中异步查询多个数据库

python - SqlAlchemy 和 PostgreSql 日期时间更新

homebrew - Octave 字体配置错误

macos - Xcrun 丢失,xcode 命令行工具未修复

macos - 在 Mac OS X 上安装/升级 gradle

c++ - 在 Mac OS X 上的共享库中隐藏符号

linux - 使用 GUI 开发程序

python - gtimelog 在 Mac OS 上找不到通过 Homebrew 安装的 pygtk