2013-10-24 6 views
21

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

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

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. Как найти, где это находится? Вполне возможно, что он был установлен с доморощенным, но я не уверен.

+0

Как вы установили postgresql на localhost? Кажется, он не работает ('netstat -na | grep 5432', чтобы проверить, не слушает ли он. Но знание того, как вы его установили, поможет выяснить, как его запустить. – Doon

+0

' netstat -na | grep 5432' ничего не возвращает. Я не помню, как я его установил. Вероятно, доморощенный. –

+0

PostgreSQL должен быть установлен Apple в Mac OS в последнее время. Вы можете подключиться к этой установке, что представляется вероятным, если установка ОС обновление не сломалось, не сломалось, если бы вы установили его сами. –

ответ

23

, если вы установили его через доморощенного, попробуйте это (от 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, то дамп/восстановление будет в порядке .

вытягивать из комментариев.

нормально, так это выглядит, как у вас 9.2.3 установлен, то, что я хотел бы сделать это.

postgres -D /usr/local/var/postgres 

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

убить постгиров

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

+0

Удивительный, похоже, что я использовал доморощенный - 'brew info postgresql' возвращает postgresql: stable 9.3.1 ... Как указать его на driectory PGDATA? –

+0

Ну, это показывает, как установлено что-то вроде 'usr/local/Cellar/postgresql/9.3.1 (2919 файлов, 39M) * Построен из списка источников или' brew | grep postgresql', чтобы убедиться, что он установлен, если он просто выполняет загрузку/выгрузку на launchctll, он должен вернуть его, не нужно указывать PGDATA, как это уже должно было быть сделано сценариями запуска. – Doon

+1

У меня нет такого файла или каталога для команд выгрузки и загрузки. –

5

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

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

+0

Прохладный, может ли он найти мои предыдущие базы данных? –

+0

Наверное, нет, тем более, что ваш сервер не запустится. – jewilmeer

+0

Нетрудно найти старую установку сервера используя 'find' и/или' locate'. Посмотрите на файл pg.conf или 'pg_config' и нос вокруг них. –

4

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

export PGHOST=localhost 
1

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

Подобное произошло переход от Snow Leopard до Mountain Lion тоже:

Mountain Lion Postgres could not connect

6

Т.Л., д-р Просто запустите приложение Postgres!

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

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

потом я вернулся и:

  • Выход 9,3
  • Восстановлены 9.2 из мусора
  • пущена 9.2

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

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

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

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

+0

Файл PID Postgres при установке с доморощенным - '/ usr/local/var/postgres/postmaster.pid' –

0

Если вы обновили с использованием 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 

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

$ createuser -s MyApp 

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

2

Я недавно столкнулся с этой проблемой, когда обновился до 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 

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

$ gem pristine pg 

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

0

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

0

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

Смежные вопросы