Подтвердить что ты не робот

Ошибка сокета Postgresql в OSX 10.7.3 при запуске Django syncdb

С момента обновления 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", я также получаю эту ошибку:

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

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

4b9b3361

Ответ 1

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

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

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

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

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

Ответ 2

Проблема Eelke была такой же, как моя. Самое быстрое исправление для этого было бы добавить

export PGHOST=/tmp

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

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

Ответ 3

Произошло небольшое тестирование на моем 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.

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

Ответ 4

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

 ln -s /tmp/.s.PGSQL.5432 /var/pgsql_socket/

Ответ 6

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

Ответ 7

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