Postgres терпит неудачу с 'не может открыть файл сопоставления отношений "global / pg_filenode.map"' - PullRequest
39 голосов
/ 16 сентября 2011

У меня проблема с моей установкой postgres в моей среде разработки, и мне нужна помощь в ее диагностике. Мне еще не повезло найти решение.

  1. У меня установлена ​​postgres 9.0.4 с homebrew
  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

Если я попытаюсь остановиться, хотя

$ 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?

Хорошо, это отсутствует

$ 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

Но глобальный / 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

Однако, как указано выше, выясняется, что запущенный процесс был для моей предыдущей установки postgres 9.0.3

Мне кажется, у меня была старая версия org.postgresql.postgres.plist в ~ / Library / LaunchAgents /

Мне пришлось:

  1. Удалите и повторно добавьте агент запуска
  2. убить процессы за 9.0.3
  3. Инициализировать БД initdb /usr/local/var/postgres
  4. Перезагрузите компьютер

и теперь у меня это работает и работает.

Ответы [ 11 ]

29 голосов
/ 18 сентября 2011

Я не уверен, что источник моей первоначальной проблемы был с 9.0.3, потому что я получал эту проблему:

psql: FATAL:  could not open relation mapping file "global/pg_filenode.map": No such file or directory

Однако, как указано выше, выясняется, что запущенный процесс был для моего предыдущегоустановка postgres 9.0.3

Я полагаю, что у меня была старая версия org.postgresql.postgres.plist в ~ / Library / LaunchAgents /

Мне пришлось:

  1. Удалите и повторно добавьте агент запуска
  2. Убейте процессы для 9.0.3
  3. Инициализируйте базу данных initdb /usr/local/var/postgres
  4. Перезагрузите компьютер

и теперь у меня это работает и работает.

7 голосов
/ 06 марта 2015

Это может быть проблема с правами доступа. Пожалуйста, проверьте владельца и группу файлов конфигурации в /var/lib/pgsql/9.3/data/

chown -R postgres:postgres /var/lib/pgsql/9.3/data/

. Решил проблему для меня

5 голосов
/ 10 мая 2013

Я только что столкнулся с этой проблемой. Решил это, установив владельца каталога данных postgres непривилегированным пользователем postgres.

4 голосов
/ 17 сентября 2015

ps aux | grep postgres показал, что у меня был другой экземпляр postgres, работающий в каталоге временных данных из предыдущего теста.Убийство этого процесса решило проблему.

2 голосов
/ 18 мая 2016

Это (https://gist.github.com/olivierlacan/e1bf5c34bc9f82e06bc0) решило мою проблему! Сначала мне нужно было:

  1. Удалить Postgres.app из моих приложений
  2. Удалить / usr / local / var /Каталог postgres
  3. initdb /usr/local/var/postgres/

Затем я смог запустить / остановить Postgres с помощью этих 2 команд:

Запуск:

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
2 голосов
/ 07 февраля 2014

Мое пошаговое решение в fedora:

  • /bin/systemctl stop postgresql.service (Остановить услугу)
  • rm -rf /var/lib/pgsql/data (убрать директорию "data")
  • postgresql-setup initdb (воссоздать каталог "data")
  • /bin/systemctl start postgresql.service (Запустить услугу)

Также полезно проверить права доступа к каталогу «data»:

chown -R postgres:postgres <path_to_data_dir>

(Слава @LuizFernandodaSilva & @ user4640867 )

2 голосов
/ 30 мая 2013

У меня было старое значение запутанных вещей PGDATA.

1 голос
/ 11 мая 2019

Обнаружена эта проблема с использованием mdillon/postgis:9.6 образа Docker.Простой sudo docker restart <container id> решил проблему.

1 голос
/ 05 мая 2014

У меня была такая же ошибка psql: FATAL: could not open relation mapping file "global/pg_filenode.map": No such file or directory.

Спасибо за примечание # 2 выше: 'Убить процессы за 9.0.3'

Я ранее настроил и скомпилировал PostgreSQL.Затем я решил перенастроить, установить gmake, gmake с разными путями к файлам.Недавно скомпилированная программа не нашла pg_filenode.map в ожидаемом пути к файлу.Завершение работающего процесса postgres, очистка pgsql / data и повторное выполнение initdb позволили создать новую базу данных.

1 голос
/ 11 апреля 2014

Я согласен со всеми вышеперечисленными решениями. Я запускал Postgres на сервере, и проблема заключалась в том, что я использовал номер PORT, который использовался какой-то другой более старой версией Postgres.

Мне нужно было только изменить порт.

...