Как и некоторые другие, я получаю эту ошибку, когда запускаю 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 будет запущен, и, как мне говорят, приводит к большинству из этих проблем.
Ответы:
Проверьте, нет ли postmaster.pid в вашем каталоге postgres, возможно
/usr/local/var/postgres/
удалите это и запустите сервер.
Проверьте - https://github.com/mperham/lunchy - отличная оболочка для launchctl.
источник
« Postgres.app » лучше исправить, если вы работаете в OS X
Вот исправление:
cd /var
rm -r pgsql_socket
ln -s /tmp pgsql_socket
chown _postgres:_postgres pgsql_socket
Более подробная информация доступна на " postgresql 9.0.3. На Lion Dev Preview 1 ".
источник
/tmp
_postgres, но эй :)Для меня это работает
источник
pg_ctl -D /usr/local/var/postgres -l /usr/local/var/postgres/server.log start
brew services restart postgresql
No such file or directory
в моем случаеЭто сработало для меня из-за ошибки, которую вы упомянули. Сделайте одно из них:
Возможно, измените порт по умолчанию, указанный в
postgres.conf
файле, если вы использовали что-то другое, чем порт по умолчанию5432
при установке.Измените номер порта
postgresql.conf
и перезапустите сервер БД.Вместо того, чтобы
psql
вводить полную команду:источник
Если вы используете Homebrew, удалите Postgresql end pg gems: *
Загрузите и запустите следующий сценарий, чтобы исправить разрешение на / usr / local: * https://gist.github.com/rpavlik/768518
Затем снова установите Postgres и введите pg gem: *
Для запуска запустите postgresql при входе в систему:
Или начать вручную.
Установить pg gem
Надеюсь помог
источник
brew info postgres
:ARCHFLAGS="-arch x86_64" gem install pg
initdb /usr/local/var/postgres -E utf8
работает. Огромное спасибо.У меня была эта проблема, когда я обновил Postgres до 9.3.x. Быстрым решением для меня было понижение до той версии 9.2.x, которая была у меня до этого (не нужно устанавливать новую).
« Homebrew установить конкретную версию формулы? » Предлагает гораздо более полное объяснение, а также альтернативные способы решения проблемы.
источник
Я исправил это, обновив postgres.
Затем мне пришлось обновить базы данных, чтобы они были совместимы с новой основной версией, потому что я обновил с 10 до 11.
(источник https://github.com/facebook/react-native/issues/18760#issuecomment-410533581 )
источник
Так что для многих проблем здесь, кажется, что люди уже запускали psql и должны были удалить
postmaster.pid
. Тем не менее, у меня не было этой проблемы, так как у меня никогда не было должным образом установлено postgres в моей системе.Вот решение, которое работало для меня в MAC OSX Yosemite
export PATH=$PATH:/Applications/Postgres.app/Contents/Versions/latest/bin
Надеюсь это поможет! Toodles!
Кроме того, этот ответ помог мне больше всего: https://stackoverflow.com/a/21503349/3173748
источник
Когда вы запускаете: psql -p 5432 -h localhost, он не использует драйвер обратной связи, а использует настоящий сокет, и, следовательно, вам необходимо настроить postgres для приема соединений сокетов. Следовательно, даже если pgadmin и другие клиенты могут работать, psql не будет.
Вам нужно изменить как файл postgresql.conf, так и файлы pg_hba.conf, чтобы разрешить соединение через реальный сокет. Это также позволит установить соединение с удаленного IP-адреса, поэтому по умолчанию оно отключено.
Эти файлы находятся в каталоге данных, но фактическое расположение может отличаться в зависимости от того, как был установлен postgres. Запустив postgres, запустите команду:
Эти два файла являются каталогом -D (может быть, / usr / local / pgsql / data).
Для файла postgresql.conf раскомментируйте адрес прослушивания и измените его следующим образом:
Для pg_hba.conf добавьте строку:
источник
Я не очень хорошо знаю Mac или Homebrew, но хорошо знаю PostgreSQL.
Вы хотите выяснить, откуда берутся журналы из PostgreSQL и каков каталог сокетов для PostgreSQL. По умолчанию при сборке PG каталог сокета / tmp /. Если вы не изменили это при сборке PG, а затем запустили PG, вы сможете увидеть файл сокета в / tmp, если выполните: ls -al / tmp
Файл сокета начинается с ".", Поэтому вы не увидите его с "-a" до ls.
Если вы не видите там сокета и ничего не видите от ps awux | grep postgres, то, возможно, PG не запущен, а может, и установлен OSX. Может случиться так, что у вас может возникнуть конфликт при прослушивании порта 5432 на localhost - используйте netstat -anp, чтобы увидеть, что, если вообще что-то прослушивается на 5432. Если Mac OSX PG уже прослушивает этот порт, то это может быть проблемой.
Надеюсь, это поможет. Я слышал, что доморощенный может сделать вещи немного уродливыми, и многие люди, с которыми я разговаривал, поощряют использование ВМ вместо этого.
источник
Я столкнулся с этой ошибкой при запуске на Mac 10.15.5 с использованием homebrew.
Существует файл с именем postmaster.pid, который автоматически удаляется при выходе из postresql.
Если это не делает следующее
источник
Причина
Lion поставляется с уже установленной версией postgres и использует эти двоичные файлы по умолчанию. В общем, вы можете обойти это, используя полный путь к бинарным файлам homebrew postgres, но могут быть проблемы с другими программами.
Решение
Через
http://nextmarvel.net/blog/2011/09/brew-install-postgresql-on-os-x-lion/
источник
Одна из причин, по которой вы получаете эту ошибку, заключается в том, что ваша локальная база данных postgres завершает работу при перезагрузке компьютера. В новом окне терминала просто введите:
перезагрузить сервер.
источник
Привет, мир :)
Лучший, но странный способ для меня - делать следующие вещи.
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 как красивые таблицы данныхКонечно, это полезно только для локального сервера. Я буду рад, если эта инструкция поможет другим, кто столкнулся с этой проблемой.
источник
У меня был PostgreSQL 9.3 и я получил ту же ошибку,
Я исправил это с помощью:
Меня устраивает.
источник
что бы это ни стоило, я столкнулся с такой же ошибкой, когда в моем файле (
md4
вместоmd5
) была опечаткаpg_hba.conf
(/etc/postgresql/9.5/main/pg_hba.conf
)Если вы попали сюда, как я, дважды проверьте этот файл, чтобы убедиться, что там нет ничего смешного.
источник
pg_hba.conf
файл?Могут быть разные проблемы с локальным запуском PostgreSQL. Я бы порекомендовал очистить все установленные версии postgres и начать все заново. После того, как вы установили его, очень легко воссоздать вашу базу данных, если у вас есть проект rails с последней версией
db/schema.rb
Вот как я обычно устанавливаю PostgreSQL на Mac . Если вы используете свою базу данных под пользователем root локально, вы можете пропустить последний шаг, который создает
todo
пользователяисточник
Одной из причин может быть то, что
unix_socket_directories в файле postgresql.conf не указан в каталоге, который он ищет.
В примере с вопросом он ищет каталог / tmp, это должно быть указано в файле postgresql.conf
что-то вроде этого:
Это решение сработало для меня.
источник
Если вы работаете в MacOS и используете homebrew, я нашел этот ответ чрезвычайно полезным:
https://stackoverflow.com/a/27708774/4062901
Для меня мой сервер работал, но из-за обновления у меня были проблемы с подключением (примечание: я использую службы brew). Если Postgres работает, попробуйте
cat /usr/local/var/postgres/server.log
посмотреть, что в журналах написано. Моя ошибка была миграцией, а не проблемой подключения.Кроме того, после ручной миграции, которую они предлагают (что работает, но), я обнаружил, что для моего пользователя больше нет таблицы. Попробуйте эту команду, чтобы исправить это:
createdb
(ответ через psql: FATAL: база данных "<пользователь>" не существует )источник
Просто перезапустите Postgres, как только появится ошибка,
brew services restart postgresql
и попробуйте сноваисточник
для меня команда
rm /usr/local/var/postgres/postmaster.pid
не работает, потому что я установил конкретную версию postgresql с homebrew.правильная команда
rm /usr/local/var/postgres@10/postmaster.pid
.тогда
brew services restart postgresql@10
.источник
Это очень просто. Добавьте хост только в ваш файл database.yaml.
источник