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

Postgres - FATAL: файлы базы данных несовместимы с сервером

После перезагрузки моего MacBook Pro я не могу запустить сервер базы данных:

could not connect to server: No such file or directory
Is the server running locally and accepting
connections on Unix domain socket "/tmp/.s.PGSQL.5432"?

Я проверил журналы, и следующая строка появляется снова и снова:

FATAL:  database files are incompatible with server
DETAIL:  The data directory was initialized by PostgreSQL version 9.2, which is not compatible with this version 9.0.4.

9.0.4 была версия, которая была предварительно установлена ​​на mac, 9.2 [.4] - это версия, которую я установил через Homebrew. Как уже упоминалось, это использовалось для работы до перезапуска, поэтому оно не может быть компиляционной проблемой. Я также перезапустил initdb /usr/local/var/postgres -E utf8, и файл все еще существует.

К сожалению, я довольно новичок в Postgres, поэтому любая помощь будет очень оценена.

4b9b3361

Ответ 1

Если вы работаете на Mac и недавно обновились до 10. с 10.x, вы можете запустить следующую команду, чтобы обновить каталог данных postgres, сохранив все данные:

brew postgresql-upgrade-database

Вышеуказанная команда взята из вывода brew info postgres

Ответ 2

Если вы ищете ядерную опцию (удалите все данные и получите новую базу данных), вы можете сделать:

rm -rf /usr/local/var/postgres && initdb /usr/local/var/postgres -E utf8

а затем вам понадобится rake db:setup и rake db:migrate из вашего приложения Rails, чтобы снова установить настройки.

Ответ 3

Попробуйте следующее: https://gist.github.com/joho/3735740

Он отлично работал у меня. В итоге он также генерирует вам 2 скрипта bash для проверки вашей БД и удаления старого кластера. Действительно Удивительный.

см. http://www.postgresql.org/docs/9.2/static/pgupgrade.html, чтобы понять больше.

Ответ 4

Нашел в интернете, это решение отлично работает для меня.

Когда я попытался запустить сервер postgresql после обновления до OS X 10.10 Yosemite, я столкнулся со следующей проблемой:

pg_ctl -D /usr/local/var/postgres -l /usr/local/var/postgres/server.log start

could not connect to server: No such file or directory
Is the server running locally and accepting
connections on Unix domain socket "/var/pgsql_socket/.s.PGSQL.5432"?

Хорошо, давайте посмотрим журналы сервера:

cat /usr/local/var/postgres/server.log

FATAL: database files are incompatible with server
DETAIL: The data directory was initialized by PostgreSQL version 9.2, which is not compatible with this version 9.3.5.

Итак, нам нужно выполнить несколько шагов после обновления postgresql:

launchctl unload -w ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist

mv /usr/local/var/postgres /usr/local/var/postgres92

brew update

brew upgrade postgresql

initdb /usr/local/var/postgres -E utf8

pg_upgrade -b /usr/local/Cellar/postgresql/9.2.3/bin -B /usr/local/Cellar/postgresql/9.3.5_1/bin -d /usr/local/var/postgres92 -D /usr/local/var/postgres

cp /usr/local/Cellar/postgresql/9.3.5_1/homebrew.mxcl.postgresql.plist ~/Library/LaunchAgents/

pg_ctl -D /usr/local/var/postgres -l /usr/local/var/postgres/server.log start

rm -rf /usr/local/var/postgres92

Вот оно.

Ответ 5

Если вы хотите сохранить предыдущую версию postgres, используйте brew switch:

$ brew info postgresql

postgresql: stable 10.5 (bottled), HEAD
Object-relational database system
https://www.postgresql.org/
Conflicts with:
  postgres-xc (because postgresql and postgres-xc install the same binaries.)
/usr/local/Cellar/postgresql/9.6.3 (3,259 files, 36.6MB)
  Poured from bottle on 2017-07-09 at 22:15:41
/usr/local/Cellar/postgresql/10.5 (1,705 files, 20.8MB) *
  Poured from bottle on 2018-11-04 at 15:13:13

$ brew switch postgresql 9.6.3
$ brew services stop postgresql
$ brew services start postgresql

В противном случае рассмотрите эту команду brew для переноса существующих данных: brew postgresql-upgrade-database. Проверьте исходный код.

Ответ 6

Это случилось со мной, когда я пытался запустить Postgres12 с подключенным томом postgres11. Просто удаление подключенного тома для postgres11 и перезапуск помогли мне.

Ранее я использовал:

docker run -d --name my_database -v /Users/champ/postgres:/var/lib/postgresql/data -p 54320:5432 postgres:11

Я удалил /Users/champ/postgres и перезапустил postgres 12, используя

docker run -d --name my_database -v /Users/champ/postgres:/var/lib/postgresql/data -p 54320:5432 postgres:12