Мне удалось запустить мою локальную среду разработки.
Все мои локальные приложения Rails теперь выдают ошибку:
PGError
could not connect to server: Permission denied
Is the server running locally and accepting
connections on Unix domain socket "/var/pgsql_socket/.s.PGSQL.5432"?
Понятия не имею, чем это вызвано.
В поисках решения я обновил все встроенные драгоценные камни, обновил системные драгоценные камни, обновил MacPorts. Никакой радости.
Другие сообщали об этой проблеме при обновлении с OSX Leopard до Lion из-за путаницы по поводу того, какую версию Postgres следует использовать (например, версию OSX или версию MacPorts). Я пользуюсь Lion несколько месяцев, поэтому кажется странным, что это должно произойти сейчас.
Я не хочу слишком много возиться, не поняв сначала, в чем проблема. Как я могу отладить это методично?
Как я могу определить, сколько версий PostgreSQL установлено в моей системе, к какой из них осуществляется доступ и где она расположена? Как это исправить, если используется неправильный PostgreSQL?
Извините за вопросы новичков. Я все еще изучаю, как это работает! Спасибо за любые указатели.
РЕДАКТИРОВАТЬ
Некоторые обновления основаны на предложениях и комментариях ниже.
Я попытался запустить и pg_lsclusters
вернулcommand not found
ошибку.
Затем я попытался локализовать свой файл pg_hba.conf и нашел эти три файла примера:
/opt/local/share/postgresql84/pg_hba.conf.sample
/opt/local/var/macports/software/postgresql84/8.4.7_0/opt/local/share/postgresql84/pg_hba.conf.sample
/usr/share/postgresql/pg_hba.conf.sample
Полагаю, установлено 3 версии PSQL? Macports, OSX по умолчанию и ???.
Затем я выполнил поиск сценария запуска launchctl, ps -ef | grep postgres
который вернул
0 56 1 0 11:41AM ?? 0:00.02 /opt/local/bin/daemondo --label=postgresql84-server --start-cmd /opt/local/etc/LaunchDaemons/org.macports.postgresql84-server/postgresql84-server.wrapper start ; --stop-cmd /opt/local/etc/LaunchDaemons/org.macports.postgresql84-server/postgresql84-server.wrapper stop ; --restart-cmd /opt/local/etc/LaunchDaemons/org.macports.postgresql84-server/postgresql84-server.wrapper restart ; --pid=none
500 372 1 0 11:42AM ?? 0:00.17 /opt/local/lib/postgresql84/bin/postgres -D /opt/local/var/db/postgresql84/defaultdb
500 766 372 0 11:43AM ?? 0:00.37 postgres: writer process
500 767 372 0 11:43AM ?? 0:00.24 postgres: wal writer process
500 768 372 0 11:43AM ?? 0:00.16 postgres: autovacuum launcher process
500 769 372 0 11:43AM ?? 0:00.08 postgres: stats collector process
501 4497 1016 0 12:36PM ttys000 0:00.00 grep postgres
Я разместил содержимое postgresql84-server.wrapper на http://pastebin.com/Gj5TpP62 .
Я попытался запустить, port load postgresql184-server
но получил ошибкуError: Port postgresql184-server not found
.
Я до сих пор не понимаю, как это исправить, и ценю любые указатели "для чайников".
Спасибо!
EDIT2
Эта проблема возникла после того, как у меня возникли проблемы с daemondo. Мои локальные приложения Rails вылетали из-за ошибки приложения типа «daemondo gem не может быть найден». Затем я прошел через серию обновлений пакетов, обновлений драгоценных камней, обновлений портов и обновлений brew, чтобы попытаться найти проблему.
Может ли эта ошибка быть проблемой с daemondo?
источник
pg_lsclusters
и свойpg_hba.conf
файл.Ответы:
Это действительно похоже на ошибку прав доступа к файлу. Доменные сокеты Unix представляют собой файлы и имеют права пользователя, как и любые другие. Похоже, что пользователь OSX, пытающийся получить доступ к базе данных, не имеет прав доступа к файлу сокета. Чтобы подтвердить это, я провел несколько тестов на Ubuntu и psql, чтобы попытаться сгенерировать ту же ошибку (см. Ниже).
Вам необходимо проверить разрешения для файла сокета и его каталогов
/var
и файлов/var/pgsql_socket
. Ваше приложение Rails (пользователь OSX) должно иметь разрешения на выполнение (x) в этих каталогах (желательно предоставить разрешения всем), а сокет должен иметь полные разрешения (wrx). Ты можешь использоватьls -lAd <file>
для проверки, и если какая-либо из них является символической ссылкой, вам необходимо проверить файл или каталог, на который указывает ссылка.Вы можете изменить разрешения для каталога самостоятельно, но сокет настраивается postgres в
postgresql.conf
. Его можно найти в том же каталоге, что иpg_hba.conf
(вам нужно будет выяснить, какой именно). После того, как вы установили разрешения, вам нужно будет перезапустить postgresql.РЕДАКТИРОВАТЬ:
Я произвел быстрый поиск в Google, и вы, возможно, захотите посмотреть, является ли он релевантным. Это вполне может привести к
find
сбою любой попытки создать файл конфигурации.http://www.postgresqlformac.com/server/howto_edit_postgresql_confi.html
Сообщения об ошибках:
Пользователь не найден в pg_hba.conf
Пользователь не прошел аутентификацию пароля:
Отсутствует файл сокета unix:
Сокет Unix существует, но сервер его не слушает.
Неверные права доступа к файлу сокета unix :
источник
PS
возвращает процессы postgres, чтобы они были запущены. Смущенный!Мне кажется, что это (опять же) Mac / OSX-вещь: передняя и задняя части предполагают другое расположение для сокета домена unix (который функционирует как точка встречи ).
Контрольный список:
ps aux | grep postgres | grep -v grep
должно помочьfind / -name .s.PGSQL.5432 -ls
(раньше сокет находился в / tmp; вы можете начать поиски там)Если postgres запущен и сокет действительно существует, вы можете использовать:
psql -h /the/directory/where/the/socket/was/found mydbname
(который пытается подключиться к сокету unix-домена)
; теперь вы должны получить приглашение psql: попробуйте,
\d
а затем\q
выйти. Вы также можете попробовать:psql -h localhost mydbname
,(который пытается подключиться к localhost (127.0.0.1)
Если эти попытки не удались из-за недостаточной авторизации, вы можете изменить pg_hba.conf (и SIGHUP или перезапустить). В этом случае: также проверьте журналы.
Аналогичный вопрос: не удается запустить Postgres
Примечание: если вы можете получить приглашение psql, быстрое решение этой проблемы - просто изменить ваш
config/database.yml
, добавить:host: localhost
или вы можете попробовать добавить:
host: /the/directory/where/the/socket/was/found
В моем случае,
host: /tmp
источник
Попробуйте удалить pg gem (
gem uninstall pg
), а затем переустановить - если вы используете Bundlerbundle install
, иначеgem install pg
. Также убедитесь, что в пути указана правильная версия: у Lion есть версия posgresql (в предыдущих версиях не было), и она может находиться в пути до вашей локально установленной версии (например, MacPorts, homebrew).В моем случае: домашняя установка postgresql, обновленная postgresql, rails и т.д., а затем возникла эта ошибка. Удаление и переустановка pg gem сделали это за меня.
источник
Местоположение файла сокета запекается в гем во время компиляции. Таким образом, вам нужно перестроить свой pg gem.
Это должно решить эту конкретную проблему.
источник
Если вы получаете аналогичную ошибку:
Это может помочь (мне это удалось):
Указанный каталог должен быть другим, если вы не используете OSX / Brew.
Примечание. Это не точное сообщение об ошибке, показанное выше, но эта цепочка является первым результатом для этого сообщения об ошибке.
источник
rm -fr /usr/local/var/postgres
перед запускомinitb
rm -rf /usr/local/var/postgres
тогда занятьсяinitdb /usr/local/var/postgres -E utf8
. Но при этом убедитесь, что postgres не запущен, иначе каталог будет воссоздан почти сразу.что разрешило эту ошибку для меня, так это удаление файла postmaster.pid в каталоге postgres. пожалуйста, посмотрите мой вопрос / ответ, используя следующую ссылку для получения пошаговых инструкций. моя проблема не была связана с правами доступа к файлам:
psql: не удалось подключиться к серверу: нет такого файла или каталога (Mac OS X)
тем не менее, люди, отвечавшие на этот вопрос, потеряли много игры, спасибо за это! я проголосовал за все, что мог
источник
Вот как я решил это сообщение об ошибке, частично основываясь на ответе wildplasser.
Итак, есть мой сокет или что-то еще, но клиент ищет его по адресу:
Поэтому просто создайте символическую ссылку на
/tmp/.s.PGSQL.5432
:Надеюсь, это поможет кому-нибудь. Это кажется неправильным, но это работает!
источник
sudo mkdir /var/run/postgresql
папку (в моем случае id не существовал и не был создан установщиком для pg 9.3.X).Я начал получать это после обновления до нового postgres - я не знал, что у меня есть файлы данных.
Сначала я попытался запустить сервер postgres:
вот как я увидел эту ошибку
Итак, я нашел этот ответ на SO - связанный с ошибкой несовместимости: /server/342626/how-do-i-upgrade-postgresl-database-incompatibility-error
Это то, что исправлено
источник
Просто подтверждаю, что у меня была аналогичная проблема с PSQL и Django,
Похоже, что мой сервер psql не был выключен правильно, а файл postmaster.pid все еще присутствовал (должен быть автоматически удален при правильном завершении работы) в моей папке postgres.
Удалил это и все хорошо
источник
psql: could not connect to server: No such file or directory.
удалениеpostmaster.pid
из/usr/local/var/postgres
заставило все снова работать.Я получал ту же ошибку (оказалось, что это была ошибка с
postmaster.pid
. Вот как я снова запустил postgres ( спасибо Рикардо Бурилло за исправление ):источник
pg_resetxlog
возвращенный файл блокировки postmaster.pid существует.У меня была аналогичная проблема при попытке использовать postgresql с рельсами. Обновление моего Gemfile для использования новой версии gem pg решило эту проблему для меня. (gem pg версии 0.16.0 работает). В Gemfile используйте:
затем запустите следующее, чтобы обновить драгоценный камень
источник
Я читал много статей об этой ошибке, и для меня решением было просто перезапустить postgres с помощью:
Что здесь не упоминается.
источник
Некоторое время я искал решение. Итак, это тоже устранило проблему для меня (переустановить db):
Я использую OS X 10.11.3 с пивом.
источник
Это случилось со мной сегодня после того, как разрядился аккумулятор моего Macbook. Думаю, это может быть вызвано неправильным выключением. Все, что вам нужно сделать в таких случаях, как мой, - это удалить postmaster.pid
Перейдите в папку
Проверьте, присутствует ли postmaster.pid
Удалить postmaster.pid
источник
В моем случае ни одно из предыдущих решений не было хорошим. Вместо использования сокета вы можете использовать номер TCP
host
+port
в файле конфигурации Rails. Итак, вdatabase.yml
файле просто добавьте две строки, как здесь:Это решило мою проблему :)
Раньше я использовал это исправление:
Но после каждой перезагрузки
/tmp/.s.PGSQL.5432
удалялась и мне приходилось повторять эти команды. Решение работает, но ужасно, так что лучше просто отредактируйте файл конфигурации базы данных Rails :)источник
Получил эту ошибку, когда настраивал Posgtres с Django, я использую Back Track, и он поставляется с установленным Postgres. Я предполагаю, что проблема в настройках. Я исправил это, полностью удалив и переустановив вот так.
Теперь запустите:
чтобы удалить все PostgreSQL из вашей системы. Одной очистки пакета postgres недостаточно, поскольку это просто пустой метапакет.
После удаления всех пакетов PostgreSQL запустите:
Теперь вы сможете:
источник
MacOSX здесь. У меня была такая же проблема после обновления моей установки postresql с версии до 9.1 до 9.1.2 с помощью homebrew. (Кстати, не забудьте создать дамп баз данных перед обновлением с помощью pg_dump, базы данных до 9.1 несовместимы.) Та же проблема, те же сообщения об ошибках.
Удаление pg gem помогло мне. Мне на самом деле пришлось немного потанцевать, чтобы обнаружить проблему. Сначала я сделал глобальную деинсталляцию драгоценных камней, очистив колоду от всех старых драгоценных камней (их было несколько). Затем я удалил pg из своего Gemfile, перекомпоновал, восстановил ссылку pg и снова восстановился.
После этого все заработало как шарм.
источник
Привет, мир :)
Лучшим, но странным для меня способом было делать следующее.
1) Загрузите postgres93.app или другую версию. Добавьте это приложение в папку / Applications /.
2) Добавьте строку (команду) в файл
Это ПУТЬ к.bash_profile
(который находится в моем домашнем каталоге):psql
отPostgres93.app
. Строка (команда) запускается каждый раз при запуске консоли.3) Запускаем
Postgres93.app
из/Applications/
папки. Он запускает локальный сервер (порт - «5432», а хост - «localhost»).4) После всех этих манипуляций я был рад запустить
$ createuser -SRDP user_name
и другие команды и убедиться, что все заработало !Postgres93.app
может запускаться каждый раз при запуске вашей системы.5) Также, если вы хотите увидеть свои базы данных графически, вам следует установить
PG Commander.app
. Это хороший способ увидеть вашу базу данных postgres как красивые таблицы данныхКонечно, это полезно только для локального сервера. Буду рад, если эта инструкция поможет другим, кто сталкивался с этой проблемой.
источник
У меня была эта проблема, и после дальнейшего исследования (работы
rake db:setup
) я увидел, что rails пытается подключиться к ранее используемому экземпляру postgres, который хранился в переменных env как DATABASE_URL.Исправление:
unset DATABASE_URL
источник: https://stackoverflow.com/a/17420624/2577622
источник
Я попробовал большинство решений этой проблемы, но не смог заставить их работать.
Я запустил,
lsof -P | grep ':5432' | awk '{print $2}'
который показал PID запущенного процесса. Однако я не мог убить егоkill -9 <pid>
.Когда я запустил,
pkill postgresql
процесс наконец остановился. Надеюсь это поможет.источник
В OS X с Homebrew:
источник