Postgres失败,无法打开关系映射文件“global / pg_filenode.map”
我在我的开发环境中安装postgres时遇到问题,我需要一些帮助来诊断它。 我还没有find解决scheme的运气。
- 我有安装了自制软件的postgres 9.0.4
 - 我在OS X 10.6.8(Snow Leopard)上运行
 
我可以启动和停止服务器
$ pg_ctl -D /usr/local/var/postgres -l /usr/local/var/postgres/server.log start server starting 
如果我试图阻止
 $ 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? 
好吧,这是缺less
 $ ls -l /usr/local/var/postgres/ | grep postmaster $ 
但它肯定是在运行
 $ 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 
如果我尝试访问或使用它,我得到这个。
 $psql psql: FATAL: could not open relation mapping file "global/pg_filenode.map": No such file or directory 
但是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 
我试图卸载并重新安装不起作用。 关于如何解决这个问题的任何想法? 这几乎阻止了我今天完成任何事情。
编辑解决
我不确定我的原始问题是什么来源于9.0.3,因为我遇到了这个问题
 psql: FATAL: could not open relation mapping file "global/pg_filenode.map": No such file or directory 
但是,如上所述,事实certificate,运行过程是我以前的9.0.3的postgres安装
我相信我有一个旧版本的org.postgresql.postgres.plist在〜/ Library / LaunchAgents /
我不得不:
- 删除并重新添加启动代理
 - 杀死9.0.3的进程
 -  初始化db 
initdb /usr/local/var/postgres - 重新启动我的电脑
 
现在我已经开始工作了。
我不确定我的原始问题是什么来源于9.0.3,因为我遇到了这个问题:
 psql: FATAL: could not open relation mapping file "global/pg_filenode.map": No such file or directory 
但是,如上所述,事实certificate,运行的过程是我以前的9.0.3的postgres安装
我相信我有一个旧版本的org.postgresql.postgres.plist在〜/ Library / LaunchAgents /
我不得不:
- 删除并重新添加启动代理
 - 杀死9.0.3的进程
 -  初始化db 
initdb /usr/local/var/postgres - 重新启动我的电脑
 
现在我已经开始工作了。
我刚刚遇到这个问题。 通过将postgres数据目录的所有者设置为无特权的postgres用户来解决这个问题。
这可能是一个权限问题,请检查/var/lib/pgsql/9.3/data/中的所有者和configuration文件组
 chown -R postgres:postgres /var/lib/pgsql/9.3/data/ 
为我解决了这个问题
 ps aux | grep postgres  ps aux | grep postgres透露我有另一个postgres实例运行在以前的testing运行的临时数据目录。 杀死这个过程解决了这个问题。 
我有一个PGDATA旧的价值混淆的东西。
这( https://gist.github.com/olivierlacan/e1bf5c34bc9f82e06bc0 )解决了我的问题! 我首先必须:
- 从我的应用程序中删除Postgres.app
 - 删除/ usr / local / var / postgres目录
 -  
initdb /usr/local/var/postgres/ 
然后我可以用这两个命令启动/停止Postgres:
开始:
 pg_ctl -D /usr/local/var/postgres -l /usr/local/var/postgres/server.log start 
停止:
 pg_ctl -D /usr/local/var/postgres stop -s -m fast 
我在Fedora中的分步解决scheme:
-   
/bin/systemctl stop postgresql.service(停止服务) -   
rm -rf /var/lib/pgsql/data(删除“data”目录) -   
postgresql-setup initdb(重新创build“data”目录) -   
/bin/systemctl start postgresql.service(启动服务) 
检查“数据”目录的权限也是有用的:
 chown -R postgres:postgres <path_to_data_dir> 
(荣誉@LuizFernandodaSilva & @ user4640867 )
 我对这个问题的解决scheme: 
 我正在运行postgresql-9.3 
我的plist文件位于以下目录中:/Library/LaunchDaemons/com.edb.launchd.postgresql-9.3.plist
 第1步将停止postgres 
  1. $ sudo launchctl stop com.edb.launchd.postgresql-9.3 
 使用以下命令启动postgres(可以使用$ brew info postgresfind这个位置) 
  2. $ postgres -D / usr / local / var / postgres 
我同意上述所有解决scheme。 我在一台服务器上运行Postgres,问题是我正在使用一些其他OLDER版本的Postgres使用的端口号。
我只需要改变端口。
 我有同样的错误psql: FATAL: could not open relation mapping file "global/pg_filenode.map": No such file or directory 。 
感谢上面的注释2:“杀死9.0.3的进程”
我以前configuration和编译PostgreSQL。 然后我决定用不同的文件path重新configuration,gmake,gmake安装。 新编译的程序在预期的文件path中找不到“pg_filenode.map”。 杀死正在运行的postgres进程,清空pgsql / data,再次执行initdb允许创build一个新的数据库。