Восстановление 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.употр в моем случае). Может потребоваться перезагрузка. Я сделал это только вчера - мои фактические базы данных не были удалены, и все в порядке.
похожая вещь случилась, идя от снежного барса к горному Льву тоже:
Если вы обновили с помощью 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
.