Как и некоторые другие, я получаю эту ошибку, когда запускаю 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 будет запущен, и, как мне говорят, приводит к большинству из этих проблем.