Ошибка сокета 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
Есть ли корреляция?
Ответы
Ответ 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/
Ответ 5
Это помогло мне в конце концов...
Измените значение HOST в словаре базы данных в settings.py для этого:
'HOST': '/tmp',
Источник:
http://jeffammons.net/2011/09/fixing-postgres-on-mac-10-7-tiger-for-django
Ответ 6
Переустановка psycopg2 работала для меня
Ответ 7
Я столкнулся с тем же вопросом сразу после обновления до OSX 10.7.3; переустановка PostgreSQL решила проблему и не удалила мои существующие данные.