Postgres失败了'无法打开关系映射文件'global/pg_filenode.map"'

bul*_*ght 39 postgresql macos homebrew

我在开发环境中安装postgres时遇到问题,我需要一些帮助来诊断它.我还没有找到追踪解决方案的运气.

  1. 我用自制软件安装了postgres 9.0.4
  2. 我在OS X 10.6.8(Snow Leopard)上运行

我可以启动和停止服务器

$ pg_ctl -D /usr/local/var/postgres -l /usr/local/var/postgres/server.log start
server starting
Run Code Online (Sandbox Code Playgroud)

如果我试着停下来

$ pg_ctl -D /usr/local/var/postgres stop -s -m fast
pg_ctl: PID file "/usr/local/var/postgres/postmaster.pid" does not exist
Is server running?
Run Code Online (Sandbox Code Playgroud)

好的,这是遗漏的

$ ls -l /usr/local/var/postgres/ | grep postmaster
$
Run Code Online (Sandbox Code Playgroud)

但它肯定在运行

$ ps aux | grep postgres
pschmitz   303   0.9  0.0  2445860   1428   ??  Ss    3:12PM   0:02.46 postgres: autovacuum launcher process       
pschmitz   304   0.9  0.0  2441760    428   ??  Ss    3:12PM   0:02.57 postgres: stats collector process       
pschmitz   302   0.0  0.0  2445728    508   ??  Ss    3:12PM   0:00.56 postgres: wal writer process       
pschmitz   301   0.0  0.0  2445728    560   ??  Ss    3:12PM   0:00.78 postgres: writer process       
pschmitz   227   0.0  0.1  2445728   2432   ??  S     3:11PM   0:00.42 /usr/local/Cellar/postgresql/9.0.3/bin/postgres -D /usr/local/var/postgres -r /usr/local/var/postgres/server.log
Run Code Online (Sandbox Code Playgroud)

如果我尝试访问或使用它,我会得到这个.

$psql
psql: FATAL:  could not open relation mapping file "global/pg_filenode.map": No such file or directory
Run Code Online (Sandbox Code Playgroud)

但是global/pg_filenode.map肯定存在于

$ls -l /usr/local/var/postgres/

...
-rw-------  1 pschmitz  staff   8192 Sep 16 15:48 pg_control
-rw-------  1 pschmitz  staff    512 Sep 16 15:48 pg_filenode.map
-rw-------  1 pschmitz  staff  12092 Sep 16 15:48 pg_internal.init
Run Code Online (Sandbox Code Playgroud)

我试图卸载并重新安装无效.关于如何解决这个问题的任何想法?它几乎阻止了我今天完成任何事情.

编辑已解决

我不确定我原来问题的根源是什么,因为我遇到了这个问题

psql: FATAL:  could not open relation mapping file "global/pg_filenode.map": No such file or directory
Run Code Online (Sandbox Code Playgroud)

但是如上所述,运行过程是我以前的postgres安装9.0.3

我相信我在〜/ Library/LaunchAgents /中有一个旧版org.postgresql.postgres.plist

我不得不:

  1. 删除并重新添加启动代理
  2. 杀死9.0.3的流程
  3. 初始化db initdb /usr/local/var/postgres
  4. 重启我的电脑

现在我把它拿起来工作了.

bul*_*ght 29

我不确定我的原始问题的根源是什么,因为我遇到了这个问题:

psql: FATAL:  could not open relation mapping file "global/pg_filenode.map": No such file or directory
Run Code Online (Sandbox Code Playgroud)

但是如上所述,运行过程是我之前的postgres安装9.0.3

我相信我在〜/ Library/LaunchAgents /中有一个旧版org.postgresql.postgres.plist

我不得不:

  1. 删除并重新添加启动代理
  2. 杀死9.0.3的流程
  3. 初始化db initdb /usr/local/var/postgres
  4. 重启我的电脑

现在我把它拿起来工作了.


小智 9

这可能是权限问题,请检查/var/lib/pgsql/9.3/data/中的所有者和配置文件组

chown -R postgres:postgres /var/lib/pgsql/9.3/data/
Run Code Online (Sandbox Code Playgroud)

为我解决了这个问题


1va*_*dis 9

使用mdillon/postgis:9.6Docker 镜像遇到这个问题。简单的sudo docker restart <container id>解决了问题。


hd1*_*hd1 6

我刚遇到这个问题.通过将postgres数据目录的所有者设置为无特权的postgres用户来解决它.


Owe*_*ing 5

ps aux | grep postgres揭示了我在先前的测试运行中在临时数据目录上运行了另一个postgres实例。终止此过程可以解决此问题。