Ошибка сокета Postgresql на OSX 10.7.3 при запуске syncdb в Django
После обновления 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 ответов
У меня тоже была такая же проблема: обновил osx до 10.7.3 и после перезапуска сервера postgres у меня возникла та же проблема при попытке запустить $ ./manage.py dbshell
он проходит через psycopg2, но у него не было проблем с подключением к postgres с помощью psql.
Мне кажется, что проблема связана только с "соединениями на доменном сокете Unix", потому что psycopg2 использует обновленную библиотеку postgres 10.7.3 osx.
Я попытался переустановить psycopg2, но ничего не изменилось.
Итак, я изменил значение HOST в разделе баз данных моего django settings.py, и вместо пустой строки я поместил 'localhost'
,
и работает отлично!
У Элки была такая же проблема, как у меня. Самое быстрое решение для этого было бы добавить
export PGHOST=/tmp
переменная окружения в вашем файле.bashrc/.zshrc/etc (в зависимости от того, что вы используете).
Лучшим решением будет указать конкретный путь в конфигурационном файле вашего приложения.
Я провел небольшое тестирование на моем 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, но моя ставка заключается в том, что он либо вызывает команду по неверному пути, либо загружает библиотеку из неправильного места.
В конце концов, это помогло мне...
Измените значение HOST в словаре базы данных в settings.py на следующее:
'HOST': '/ tmp',
Источник: http://jeffammons.net/2011/09/fixing-postgres-on-mac-10-7-tiger-for-django
Вы можете решить проблему, создав символическую ссылку:
ln -s /tmp/.s.PGSQL.5432 /var/pgsql_socket/
Я столкнулся с той же проблемой сразу после обновления до OSX 10.7.3; переустановка PostgreSQL решила проблему и не удалила мои существующие данные.