Ошибка PostgreSQL "Не удалось подключиться к серверу: нет такого файла или каталога"

Как и некоторые другие, я получаю эту ошибку, когда запускаю rake db:migrate в своем проекте или даже пробую большинство задач с базами данных для моих приложений Ruby on Rails 3.2.

PGError (не удалось подключиться к серверу: такого файла или каталога нет. Сервер работает локально и принимает подключения через сокет домена Unix "/tmp/.s.PGSQL.5432"?

Я установил PostgreSQL с Homebrew очень давно, и после недавней попытки установить MongoDB моя установка PostgreSQL никогда не была такой же. Я использую OS X v10.6 Snow Leopard.

Что не так и как мне лучше понять, как PostgreSQL настроен и должен быть установлен на моем Mac?

Пока (я думаю) это говорит мне о том, что PostgreSQL не работает (?).

ps -aef|grep postgres                                                                                                   (ruby-1.9.2-p320@jct-ana) (develop) ✗
  501 17604 11329   0   0:00.00 ttys001    0:00.00 grep postgres

Но говорит ли это, что PostgreSQL работает?

✪ launchctl load -w /usr/local/Cellar/postgresql/9.1.4/homebrew.mxcl.postgresql.plist                                                        (ruby-1.9.2-p136) 
homebrew.mxcl.postgresql: Already loaded

Как это исправить? что я не вижу?

PS: ~/Library/LaunchAgents включает в себя два файла PostgreSQL .plist. Я не уверен, что это актуально.

org.postgresql.postgres.plist
homebrew.mxcl.postgresql.plist

Я попробовал следующее и получил результат, как показано ниже.

$ psql -p 5432 -h localhost

psql: could not connect to server: Connection refused
    Is the server running on host "localhost" (127.0.0.1) and accepting
    TCP/IP connections on port 5432?
could not connect to server: Connection refused
    Is the server running on host "localhost" (::1) and accepting
    TCP/IP connections on port 5432?
could not connect to server: Connection refused
    Is the server running on host "localhost" (fe80::1) and accepting
    TCP/IP connections on port 5432?

С тех пор я читал, что это происходит потому, что OS X устанавливает свою собственную версию PostgreSQL, а Homebrew устанавливает другую версию в другом месте, а команды PostgreSQL находятся в каталоге / tmp /. Вам нужно поискать больше о переполнении стека, но в основном вы используете символическую ссылку PostgreSQL, чтобы все, что просматривает этот путь tmp, действительно находило реальный путь, если это имеет смысл.

Это ссылка, где я нашел еще несколько вещей, которые нужно попробовать, в частности, используя символическую ссылку, как указано выше, Mac OSX Lion Postgres не принимает соединения в /tmp/.s.PGSQL.5432. Я все еще хотел бы, чтобы кто-нибудь составил достойное объяснение концепций, лежащих в основе установки PostgreSQL на OS X, и почему все это так сложно.

Последние идеи, которые помогут с устранением неполадок:

$ which psql // This tells you which PostgreSQL you are using when you run $ psql. 

Затем запустите:

$ echo $PATH

Главное, что нужно принять во внимание, это:

Убедитесь, что запись пути для копии PostgreSQL, которую вы хотите запустить, COMES ПЕРЕД путем к PostgreSQL системы OS X.

Это основное требование, которое решает, какой PostgreSQL будет запущен, и, как мне сказали, приводит к большинству из этих проблем.

23 ответа

Проверьте, нет ли postmaster.pid в вашем каталоге postgres, возможно /usr/local/var/postgres/

удалите это и запустите сервер.

Проверьте - https://github.com/mperham/lunchy - отличная оболочка для launchctl.

Для меня это работает

rm /usr/local/var/postgres/postmaster.pid

ОБНОВЛЕНИЕ: ЗДЕСЬ ЛУЧШЕ ИСПРАВЛЕНО, ЕСЛИ ВЫ НА OSX...

http://postgresapp.com/


Старый ответ:

Вот исправление, больше информации здесь:

https://github.com/mxcl/homebrew/issues/5004

Сначала останови БД, потом

  1. CD / VAR
  2. rm -r pgsql_socket
  3. ln -s / tmp pgsql_socket
  4. chown _postgres: _postgres pgsql_socket
  5. перезапустите postgres (не ваш компьютер)

Для вышеупомянутой ошибки, которую вы упомянули, это работает для меня..

1) возможно измените ваш порт по умолчанию, не указанный в файле postgres.conf, если вы упомянули другой порт, то по умолчанию порт 5432 при установке.

(ИЛИ ЖЕ)

2) Измените номер порта в файле postgresql.conf и перезапустите сервер БД.

(ИЛИ ЖЕ)

3) вместо psql наберите полную команду типа

"psql -p 5432 -h localhost"

  • имя сервера и номер порта

Если вы используете Homebrew, удалите Postgresql end pg gems:*

$ gem uninstall pg
$ brew uninstall postgresql

Загрузите и запустите следующий сценарий, чтобы исправить разрешение на / usr / local: * https://gist.github.com/rpavlik/768518

$ ruby fix_homebrew.rb

Затем снова установите Postgres и введите pg gem:*

$ brew install postgresql  
$ initdb /usr/local/var/postgres -E utf8

Для запуска запустите postgresql при входе в систему:

$ ln -sfv /usr/local/opt/postgresql/*.plist ~/Library/LaunchAgents 

Или начать вручную.

Установить pg gem

$ gem install pg

Надеюсь помог

Я исправил это, обновив postgres.

brew update
brew upgrade

Затем мне пришлось обновить базы данных, чтобы они были совместимы с новой основной версией, потому что я обновил с 10 до 11.

brew postgresql-upgrade-database

(источник https://github.com/facebook/react-native/issues/18760)

У меня была эта проблема, когда я обновил Postgres до 9.3.x. Быстрым решением для меня было понижение до версии 9.2.x, которая была у меня до этого (не нужно устанавливать новую).

$ ls /usr/local/Cellar/postgresql/
9.2.4
9.3.2
$ brew switch postgresql 9.2.4
$ launchctl unload ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist
$ launchctl load ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist
<open a new Terminal tab or window to reload>
$ psql

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

Я столкнулся с этой ошибкой при запуске на Mac 10.15.5 с использованием homebrew, и, похоже, это более обновленное решение, которое работает там, где не работали предыдущие.

Существует файл с именем postmaster.pid, который должен автоматически удаляться при выходе из postresql.

Если он не сделает следующее

  • brew services stop postgresql <--- Ошибка выхода до того, как rm может повредить базу данных
  • sudo rm /usr/local/var/postgres/postmaster.pid

Так что по многим вопросам здесь, кажется, что люди уже запускали psql и должны были удалить postmaster.pid, Тем не менее, у меня не было этой проблемы, так как у меня никогда не было должным образом установленной системы postgres.

Вот решение, которое работало для меня в MAC OSX Yosemite

  1. Я пошел на http://postgresapp.com/ и загрузил приложение.
  2. Я переместил приложение в каталог Application/
  3. Я добавил его в $PATH, добавив его в.bashrc или.bash_profile или.zshrc: export PATH=$PATH:/Applications/Postgres.app/Contents/Versions/latest/bin
  4. Я запустил postgres из каталога Applications и снова запустил команду, и она заработала.

Надеюсь это поможет! Toodles!

Кроме того, этот ответ помог мне больше всего: /questions/45685316/psql-ne-udalos-podklyuchitsya-k-serveru-net-takogo-fajla-ili-kataloga-mac-os-x/45685430#45685430

Когда вы запускаете: psql -p 5432 -h localhost, он не использует драйвер обратной связи, а использует настоящий сокет, и, следовательно, вам нужно настроить postgres для приема соединений с сокетом. Следовательно, даже если pgadmin и другие клиенты могут работать, psql не будет.

Вам нужно изменить как файл postgresql.conf, так и файлы pg_hba.conf, чтобы разрешить соединение через реальный сокет. Это также позволит установить соединение с удаленного IP-адреса, поэтому по умолчанию оно отключено.

Эти файлы находятся в каталоге данных, но фактическое расположение может отличаться в зависимости от того, как был установлен postgres. Запустив postgres, запустите команду:

ps -ef | grep postmaster

Эти два файла являются каталогом -D (может быть, / usr / local / pgsql / data).

Для файла postgresql.conf раскомментируйте адрес прослушивания и измените его следующим образом:

listen_address = '*'

Для pg_hba.conf добавьте строку:

host all all 0.0.0.0/0 md5

Я не очень хорошо знаю Mac или Homebrew, но хорошо знаю PostgreSQL.

Вы хотите выяснить, откуда берутся журналы из PostgreSQL и каков каталог сокетов для PostgreSQL. По умолчанию при сборке PG каталог сокета /tmp /. Если вы не изменили это при сборке PG, а затем запустили PG, вы сможете увидеть файл сокета в /tmp, если выполните: ls -al /tmp

Файл сокета начинается с ".", Поэтому вы не увидите его с "-a" до ls.

Если вы не видите там сокета и ничего не видите от ps awux | grep postgres, то, возможно, PG не запущен, а может, и установлен OSX. Может случиться так, что у вас может возникнуть конфликт при прослушивании порта 5432 на локальном хосте - используйте netstat -anp, чтобы увидеть, что, если вообще что-то прослушивается на 5432. Если Mac OSX PG уже прослушивает этот порт, то это может быть проблемой.

Надеюсь, это поможет. Я слышал, что доморощенный может сделать вещи немного уродливыми, и многие люди, с которыми я говорил, поощряют использование ВМ вместо этого.

Для меня команда rm /usr/local/var/postgres/postmaster.pid не сработало, потому что я установил определенную версию postgresql с помощью homebrew.

правильная команда rm /usr/local/var/postgres@10/postmaster.pid.

тогда brew services restart postgresql@10.

Привет, мир:)
Лучший, но странный способ для меня - делать следующие вещи.

1) Загрузите http://postgresapp.com/ или другую версию. Добавьте это приложение в папку /Applications/.

2) Добавить строку (команду) в файл .bash_profile (который находится в моем домашнем каталоге):

 экспорт PATH=/ Приложения /Postgres93.app/ Содержание /MacOS/bin/:$PATH 
Это путь к psql от Postgres93.app, Строка (команда) запускается каждый раз при запуске консоли.

3) Запустить Postgres93.app от /Applications/ папка. Он запускает локальный сервер (порт "5432", а хост "localhost").

4) После всех этих манипуляций я был рад бежать $ createuser -SRDP user_name и другие команды и посмотреть, что это работает! Postgres93.app можно заставить работать каждый раз, когда ваша система запускается.

5) Также, если вы хотите увидеть свои базы данных в графическом виде, вы должны установить PG Commander.app, Это хороший способ увидеть вашу базу данных postgres как красивые таблицы данных

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

Одна из причин, по которой вы получаете эту ошибку, заключается в том, что ваша локальная база данных postgres закрывается при перезагрузке компьютера. В новом окне терминала просто введите:

$psql -h localhost 

перезагрузить сервер.

У меня был PostgreSQL 9.3 и я получил ту же ошибку,

Не удалось подключиться к серверу: соединение отклонено. Сервер работает на хосте "localhost" (127.0.0.1) и принимает соединения TCP/IP через порт 5432?

Я исправил это с помощью:

chmod 777  /var/lib/pgsql/9.3/data/pg_hba.conf 
service postgresql-9.3 restart

Меня устраивает.

Причина

Lion поставляется с уже установленной версией postgres и использует эти двоичные файлы по умолчанию. В общем, вы можете обойти это, используя полный путь к доморощенным бинарным файлам postgres, но могут быть проблемы с другими программами.

Решение

curl http://nextmarvel.net/blog/downloads/fixBrewLionPostgres.sh | ш

С помощью

http://nextmarvel.net/blog/2011/09/brew-install-postgresql-on-os-x-lion/

Просто перезапустите Postgres, как только появится ошибка, запустив brew services restart postgresql и попробуйте еще раз

Для чего это стоит, я испытал эту же ошибку, когда у меня была опечатка (md4 вместо md5) в моем pg_hba.conf файл (/etc/postgresql/9.5/main/pg_hba.conf)

Если вы попали сюда, как я, дважды проверьте этот файл, чтобы убедиться, что там нет ничего смешного.

Мне помогло следующее решение из другого вопроса stackoverflow :

Найдите каталог данных postgres. На MAC с использованием homebrew это /usr/local/var/postgres/ , в других системах это может быть /usr/var/postgres/

Удалите pid-файл, запустив:

      rm postmaster.pid

Перезапустите постгресс. На Mac запустите:

      brew services restart postgresql

Если вы работаете в MacOS и используете homebrew, я нашел этот ответ чрезвычайно полезным:

/questions/21276448/domoroschennyij-postgres-sloman/21276460#21276460

Для меня мой сервер работал, но из-за обновления у меня были проблемы с подключением (примечание: я использую службы brew). Если Postgres работает, попробуйте cat /usr/local/var/postgres/server.log и посмотрим, что говорят логи. Моя ошибка была миграцией, а не проблемой подключения.

Кроме того, после ручной миграции, которую они предлагают (что работает, но), я обнаружил, что больше нет таблицы для моего пользователя. Попробуйте эту команду, чтобы исправить это: createdb (ответ через psql: FATAL: база данных "<пользователь>" не существует)

Могут быть разные проблемы с локальным запуском PostgreSQL. Я бы порекомендовал очистить все установленные версии postgres и начать все заново. После того, как вы его установили, очень легко восстановить вашу базу данных, если у вас есть проект rails с последней версией db/schema.rb

Вот как я обычно устанавливаю PostgreSQL на Mac. Если вы используете свою базу данных под пользователем root локально, вы можете пропустить последний шаг, который создает todo пользователь

Одной из причин может быть то, что

unix_socket_directories в файле postgresql.conf не указан в каталоге, который он ищет.

В примере с вопросом он ищет каталог /tmp, это должно быть указано в файле postgresql.conf

что-то вроде этого:

unix_socket_directories = '/var/run/postgresql,/tmp'    # comma-separated list of directories

Это решение сработало для меня.

Это очень просто. Добавьте хост только в ваш файл database.yaml.

Другие вопросы по тегам