Восстановление postgresql после обновления до OSX Mavericks

Недавнее обновление до OSX Mavericks нарушило мое подключение к базе данных для моего приложения Rails.

Когда я пытаюсь извлечь из базы данных, сервер возвращает следующую ошибку:

PG::ConnectionBad (could not connect to server: Connection refused
    Is the server running on host "localhost" (::1) and accepting
    TCP/IP connections on port 5432?
could not connect to server: Connection refused
    Is the server running on host "localhost" (127.0.0.1) and accepting
    TCP/IP connections on port 5432?
could not connect to server: Connection refused
    Is the server running on host "localhost" (fe80::1) and accepting
    TCP/IP connections on port 5432?

При попытке запустить psql я получаю:

psql: 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"?

Я пробовал множество решений, доступных в Интернете. Такая переустановка жемчужины pg и установка хоста: localhost в моей базе данных .yml. В файле /usr/local/var/postgres/pg _hba.conf говорится:

# TYPE  DATABASE        USER            ADDRESS                 METHOD

# "local" is for Unix domain socket connections only
local   all             all                                     trust
# IPv4 local connections:
host    all             all             127.0.0.1/32            trust
# IPv6 local connections:
host    all             all             ::1/128                 trust
# Allow replication connections from localhost, by a user with the
# replication privilege.
#local   replication     RyanKing                                trust
#host    replication     RyanKing        127.0.0.1/32            trust
#host    replication     RyanKing        ::1/128                 trust

который возвращает psql: /usr/local/bin/psql


Любые решения на этом? Некоторые решения предлагают мне изменить мою $PATH на мою предыдущую установку postgres, так как новая версия postgres будет добавлена ​​с Mavericks. Как найти, где это находится? Вполне возможно, что он был установлен с доморощенным, но я не уверен.

Ответ 1

если вы установили его через доморощенный, попробуйте это (от brew info postgresql)

launchctl unload ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist
launchctl load ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist

Что будет перезагружать его. Postgress.app по умолчанию не найдет ваши базы данных (вам нужно указать его в каталог PGDATA, и вы можете столкнуться с конфликтами версий (если вы используете 9.2 и postgress.app 9.3, дамп/восстановление будет в порядке.

потянув от комментариев.

ok, так что похоже, что у вас установлен 9.2.3, я бы это сделал.

postgres -D /usr/local/var/postgres 

Затем верните их все. pg_dumpall > ~/mydatabases.dump

убить postgres

a brew reinstall postgresql, но предупреждение это приведет вас от 9.2.3 до 9.3.1. Затем reimport все ваши базы данных psql < mydatabaes.dump. Обязательно следуйте указаниям по разгрузке/загрузке для материала launchctl, и в этот момент вы должны быть хорошими. Вы также можете посмотреть, как использовать postgress.app и импортировать свои базы данных в это приложение, но вам все равно придется делать резервную копию/удалять вашу базу данных.

Ответ 2

tl; dr Просто запустите приложение Postgres!

FWIW, у меня был тот же опыт после обновления Mavericks и после:

  • Установка и запуск 9.3 (появился как Postgres93 в папке с моим приложением)
  • Перемещение 9.2 в корзину
  • Сбой проверки Rails из-за того, что мои базы данных не были перенесены.

Затем я вернулся и:

  • Выход 9.3
  • Восстановлено 9.2 из корзины
  • Запущен 9.2

и все сработало нормально!

Тогда я понял, что

  • Проблема заключалась в том, что Postgres не запускался после установки Mavericks
  • Я никогда раньше ничего не делал, чтобы заставить Postgres запускаться при запуске, но...
  • Mac OS просто перезапускала Postgres после перезагрузки, потому что она выполнялась ранее

Ответ 3

Была та же проблема. Установлено, что апгрейд сильно уничтожил процессы и оставил файл pid postgres. Итак, не будьте думбазом, как я, и нажмите на перезагрузку, чтобы обновить OSX. Перед обновлением убедитесь, что вы полностью выключили.

Ответ 4

Самое простое решение - использовать http://postgresapp.com, который просто работает

Чтобы установить через доморощенный, сделайте brew update, чтобы снова запустить домашнюю страницу.

Ответ 5

Попробуйте добавить это в свой .bash_profile, как указано здесь:

export PGHOST=localhost

Ответ 6

Недавно я столкнулся с этой проблемой, когда обновился до 10.9.4

После дня проб и ошибок я нашел это сообщение от Joho, который исправил мои проблемы: https://gist.github.com/joho/3735740

Убедитесь, что вы изменили версии в соответствии с вашими версиями установки. Если у вас несколько версий, как я, вы можете увидеть, какие версии, обратившись к cd/usr/local/Cellar/postgresql. Затем выполните следующие действия, но измените номера версий в соответствии с вашими установками.

В резюме:

$ launchctl unload -w ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist
$ mv /usr/local/var/postgres /usr/local/var/postgres9.2
$ brew update
$ brew upgrade postgresql
$ initdb /usr/local/var/postgres -E utf8
$ pg_upgrade -b /usr/local/Cellar/postgresql/9.2.1/bin -B /usr/local/Cellar/postgresql/9.3.4/bin -d /usr/local/var/postgres9.2 -D /usr/local/var/postgres
$ cp /usr/local/Cellar/postgresql/9.3.4/homebrew.mxcl.postgresql.plist ~/Library/LaunchAgents/
$ pg_ctl -D /usr/local/var/postgres -l /usr/local/var/postgres/server.log start

Если вы используете ruby, также:

$ gem pristine pg

Надеюсь, это поможет! Это было для меня

Ответ 7

Если вы установите через .dmg, вы можете просто переустановить его из установщика Postgres (postgresql-9.1.3-1-osx.dmg в моем случае). Возможно, потребуется перезагрузка. Я сделал это только вчера - мои базы данных не удалялись, и теперь все в порядке.

Аналогичная вещь произошла и от Snow Leopard до Mountain Lion:

Горный лев Postgres не смог подключиться

Ответ 8

Если вы обновили с использованием Homebrew, проблема, вероятно, в формате базы данных. Проверьте его, выполнив команду postgres напрямую:

$ postgres
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.4.

Поскольку мои базы данных разработки - это все данные семян, я просто сдул их.

$ rm -rf /usr/local/var/postgres
$ initdb

Конечно, поскольку это убивает все, вам нужно будет воссоздать свои роли до того, как rake db: create может преуспеть.

$ createuser -s MyApp

Если вы не знаете имя роли, просто запустите rake db: create. Это скажет вам.

Ответ 9

После установки PostgreSQL с помощью homebrew для OS X Mavericks это сработало для меня:

sudo ARCHFLAGS="-arch x86_64" gem install pg

Если это не так, то эта команда устранила проблему в моем случае, как только она произошла снова после обновления ОС до OS X Yosemite и OS X El Capitan

sudo PATH=$PATH:/Applications/Postgres.app/Contents/Versions/[Version-Number]/bin gem install pg -v [gem version]

Кроме того, убедитесь, что вы обновили свои Xcode и command line tools для Xcode.

Ответ 10

Если вы нашли эту страницу после обновления с Yosemite, для решения проблемы необходим другой подход. По сути, обновление до Yosemite уничтожает некоторые файлы. Здесь вы можете найти проблему и решение .