Ошибка сокета Postgresql на OSX 10.7.3 при запуске syncdb в Django - PullRequest
13 голосов
/ 03 февраля 2012

После обновления OSX до версии 10.7.3, когда я пытаюсь запустить команду syncdb Django, я получаю следующую ошибку psycopg2 из Postgresql 8.4.2:

psycopg2.OperationalError: could not connect to server: No such file or directory
    Is the server running locally and accepting
    connections on Unix domain socket "/var/pgsql_socket/.s.PGSQL.5432"?

Я могуоткройте psql без инцидентов, но когда я пытаюсь запустить «pg_ctl status», я также получаю эту ошибку:

pg_ctl: could not open PID file "/Library/PostgreSQL/8.4/data/postmaster.pid": Permission denied

Есть ли корреляция?

Ответы [ 7 ]

33 голосов
/ 08 февраля 2012

У меня тоже была такая же проблема: обновил osx до 10.7.3 и после перезапуска сервера postgres у меня возникла та же проблема при попытке запустить $ ./manage.py dbshell, которая проходит через psycopg2, но у меня не было проблем с подключением к postgresиспользование psql.

Мне кажется, что проблема связана только с «соединениями на доменном сокете Unix», потому что psycopg2 использует обновленную библиотеку postgres 10.7.3 osx.

Я попытался переустановитьpsycopg2, но ничего не изменилось.

Итак, я изменил значение HOST в разделе баз данных моего django settings.py, и вместо пустой строки я поставил 'localhost'.

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

8 голосов
/ 17 февраля 2012

У Элки была такая же проблема, как у меня.Самое быстрое решение для этого было бы добавить

export PGHOST=/tmp

переменную среды в ваш файл .bashrc / .zshrc / etc (в зависимости от того, что вы используете).

Лучшее исправление было бычтобы указать конкретный путь в конфигурационном файле вашего приложения.

4 голосов
/ 05 февраля 2012

Я провел небольшое тестирование на моем Mac, и я заметил, что в моей системе есть две версии для нескольких команд.Одна версия находится в / usr / bin, другая - в /Library/PostgreSQL/9.0/bin.Версия в / usr / bin ожидает /var/pgsql_socket/.s.PGSQL.5432, правильная версия для моей установки ожидает /tmp/.s.PGSQL.5432

Версия в / usr / binэто 9.0.5, и он был установлен Apple.

К сожалению, я не знаю много о django, но моя ставка заключается в том, что он либо вызывает команду по неверному пути, либо загружает библиотеку из неправильногоместо.

2 голосов
/ 05 апреля 2012

В конце концов мне это удалось ...

Измените значение HOST в словаре базы данных в settings.py на следующее:

'HOST': '/ tmp',

Источник: http://jeffammons.net/2011/09/fixing-postgres-on-mac-10-7-tiger-for-django

2 голосов
/ 27 февраля 2012

Вы можете решить проблему, создав символическую ссылку:

 ln -s /tmp/.s.PGSQL.5432 /var/pgsql_socket/
1 голос
/ 23 октября 2012

Переустановка psycopg2 сработала у меня

0 голосов
/ 07 февраля 2012

Я столкнулся с той же проблемой сразу после обновления до OSX 10.7.3; переустановка PostgreSQL решила проблему и не удалила мои существующие данные.

...