Восстановление 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 gem и установка host: localhost в моей базе данных.в формате YML. My/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. Как найти, где это находится? Вполне возможно, что он был установлен с homebrew, но я не уверен.

10 ответов


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

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

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

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

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

postgres -D /usr/local/var/postgres 

тогда поддержите их всех. pg_dumpall > ~/mydatabases.dump

убить Постгреса

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


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

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

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

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

  • бросить 9.3
  • восстановлена 9.2 из мусора
  • начал 9.2

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

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

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

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


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

чтобы установить через homebrew, обязательно сделайте brew update чтобы заставить homebrew снова работать


попробуйте добавить это к вашему .файл как указано здесь:

export PGHOST=localhost

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

после дня проб и ошибок я нашел этот пост Джохо, который исправил мои проблемы: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

надеюсь, это поможет! Он сделал для меня


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

похожая вещь случилась, идя от снежного барса к горному Льву тоже:

Mountain Lion Postgres не удалось подключиться


Если вы обновили с помощью 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. Он вам скажет.


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


после установки 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.