Подтвердить что ты не робот

Postgres терпит неудачу в том, что "невозможно открыть файл сопоставления отношений" global/pg_filenode.map "'

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

  • У меня есть postgres 9.0.4, установленный с homebrew
  • Я запускаю 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

Но 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

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

EDIT Решено

Я не уверен, что источником исходной проблемы было 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/

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

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

и теперь я работаю и работаю.

4b9b3361

Ответ 1

Я не уверен, что источником исходной проблемы было 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/

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

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

и теперь я работаю и работаю.

Ответ 2

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

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

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

Ответ 3

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

Ответ 4

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

Ответ 5

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

Ответ 6

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

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

Также полезно проверить разрешения каталога "data":

chown -R postgres:postgres <path_to_data_dir>

(Kudos to @LuizFernandodaSilva и @user4640867)

Ответ 7

Это (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

Ответ 8

Мое решение этой проблемы:

Я запускаю 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 postgres)
2. $postgres -D/usr/local/var/postgres

Ответ 9

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

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

Ответ 10

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

Спасибо за примечание № 2 выше: "Убейте процессы для 9.0.3"

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

Ответ 11

Я случайно rm -rf * всех файлов под пользователем postgres и сталкиваюсь с этой проблемой.

Моя ситуация:

  • psql (PostgreSQL) 9.4.14
  • 16.04.1-Ubuntu

Мои шаги по восстановлению:

- sudo service postgresql stop
- reboot
- sudo -i -u postgres
- psql 
- /usr/lib/postgresql/9.4/bin/initdb /var/run/postgresql
- /usr/lib/postgresql/9.4/bin/postgres -D /var/run/postgresql

Ответ 12

mdillon/postgis:9.6 эту проблему, используя mdillon/postgis:9.6 Docker image. Простой sudo docker restart <container id> решил проблему.