2012-06-13 3 views
6

Мне недавно пришлось переустанавливать homebrew и postgres, и теперь postgres не работает с рельсами.Postgres sh: /usr/local/var/postgres/server.log: Нет такого файла или каталога

Во-первых, при попытке запустить рельсы с, я получаю это:

/Users/lee/.rvm/gems/[email protected]/gems/activerecord-3.2.6/lib/active_record/connection_adapters/postgresql_adapter.rb:1206:in `initialize': could not connect to server: Connection refused (PG::Error) 

Так что попробуйте запустить Postgres и я получаю это:

pg_ctl -D /usr/local/var/postgres -l /usr/local/var/postgres/server.log start 
server starting 
sh: /usr/local/var/postgres/server.log: No such file or directory 

Оказывается, что Postgres работает из-за этого:

ps aux | grep postgreslee    1099 0.3 0.0 2425480 188 s000 R+ 5:48PM 0:00.01 grep postgres 

Я совершенно не понимаю, почему я не могу заставить его работать.

+2

Возможно, вы установили новые postgres в другой каталог. Сначала попробуйте исключить -l flag + logfilename, чтобы узнать, запускается ли он. BTW: вы также можете указать файл журнала в postgres.conf. Что содержит каталог «/ usr/local/var/postgres»? он существует? кто является владельцем? – wildplasser

ответ

5

Во-первых, ps | grep на самом деле вытаскивает ваш grep из дерева процессов. Postgres не работает. Такое происходит, когда каталог, в который помещается журнал, не существует. Поэтому, вероятно, вы указываете его на несуществующий каталог.

Это может произойти, если у вас еще нет каталога данных.

Рекомендации:

  1. Start, убедившись, что ваш каталог данных существует. найдите pg_hba.conf и посмотрите, находится ли он в вашей системе. Если это так, то есть хороший шанс, что он находится в вашем каталоге данных (если он есть в и т. Д., Тогда найдите base/1/PG_VERSION. Это будет в вашем каталоге данных на один уровень выше базы).
  2. , если он уже изменил ваш postgresql.conf, чтобы установить настройку ведения журнала соответствующим образом и отказаться от опции -l.
  3. Если каталог данных не существует, используйте команду initdb для его создания.
+6

Если вы сделаете новую установку на OSX (через homebrew), вам нужно создать базу данных сначала 'initdb/usr/local/var/postgres -E utf8' – oschrenk