Восстановление 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 уничтожает некоторые файлы. Здесь вы можете найти проблему и решение .