PG :: ConnectionBad - не удалось подключиться к серверу: соединение отказано

271

Каждый раз, когда я запускаю свой сервер rails 4.0, я получаю этот вывод.

Started GET "/" for 127.0.0.1 at 2013-11-06 23:56:36 -0500

PG::ConnectionBad - 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" (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" (fe80::1) and accepting
TCP/IP connections on port 5432?
:
 activerecord (4.0.0) lib/active_record/connection_adapters/postgresql_adapter.rb:825:in `connect'
 activerecord (4.0.0) lib/active_record/connection_adapters/postgresql_adapter.rb:542:in `initialize'
 activerecord (4.0.0) lib/active_record/connection_adapters/postgresql_adapter.rb:41:in `postgresql_connection'
 activerecord (4.0.0) lib/active_record/connection_adapters/abstract/connection_pool.rb:440:in `new_connection'
 activerecord (4.0.0) lib/active_record/connection_adapters/abstract/connection_pool.rb:450:in `checkout_new_connection'
 activerecord (4.0.0) lib/active_record/connection_adapters/abstract/connection_pool.rb:421:in `acquire_connection'
 activerecord (4.0.0) lib/active_record/connection_adapters/abstract/connection_pool.rb:356:in `block in checkout'
 /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/monitor.rb:211:in `mon_synchronize'
 activerecord (4.0.0) lib/active_record/connection_adapters/abstract/connection_pool.rb:355:in `checkout'
 activerecord (4.0.0) lib/active_record/connection_adapters/abstract/connection_pool.rb:265:in `block in connection'
 /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/monitor.rb:211:in `mon_synchronize'
 activerecord (4.0.0) lib/active_record/connection_adapters/abstract/connection_pool.rb:264:in `connection'
 activerecord (4.0.0) lib/active_record/connection_adapters/abstract/connection_pool.rb:546:in `retrieve_connection'
 activerecord (4.0.0) lib/active_record/connection_handling.rb:79:in `retrieve_connection'
 activerecord (4.0.0) lib/active_record/connection_handling.rb:53:in `connection'
 activerecord (4.0.0) lib/active_record/migration.rb:792:in `current_version'
 activerecord (4.0.0) lib/active_record/migration.rb:800:in `needs_migration?'
 activerecord (4.0.0) lib/active_record/migration.rb:379:in `check_pending!'
 activerecord (4.0.0) lib/active_record/migration.rb:366:in `call'
 actionpack (4.0.0) lib/action_dispatch/middleware/callbacks.rb:29:in `block in call'
 activesupport (4.0.0) lib/active_support/callbacks.rb:373:in `_run__1613334440513032208__call__callbacks'
 activesupport (4.0.0) lib/active_support/callbacks.rb:80:in `run_callbacks'
 actionpack (4.0.0) lib/action_dispatch/middleware/callbacks.rb:27:in `call'
 actionpack (4.0.0) lib/action_dispatch/middleware/reloader.rb:64:in `call'
 actionpack (4.0.0) lib/action_dispatch/middleware/remote_ip.rb:76:in `call'
 better_errors (0.9.0) lib/better_errors/middleware.rb:84:in `protected_app_call'
 better_errors (0.9.0) lib/better_errors/middleware.rb:79:in `better_errors_call'
 better_errors (0.9.0) lib/better_errors/middleware.rb:56:in `call'
 actionpack (4.0.0) lib/action_dispatch/middleware/debug_exceptions.rb:17:in `call'
 actionpack (4.0.0) lib/action_dispatch/middleware/show_exceptions.rb:30:in `call'
 railties (4.0.0) lib/rails/rack/logger.rb:38:in `call_app'
 railties (4.0.0) lib/rails/rack/logger.rb:21:in `block in call'
 activesupport (4.0.0) lib/active_support/tagged_logging.rb:67:in `block in tagged'
 activesupport (4.0.0) lib/active_support/tagged_logging.rb:25:in `tagged'
 activesupport (4.0.0) lib/active_support/tagged_logging.rb:67:in `tagged'
 railties (4.0.0) lib/rails/rack/logger.rb:21:in `call'
 quiet_assets (1.0.2) lib/quiet_assets.rb:18:in `call_with_quiet_assets'
 actionpack (4.0.0) lib/action_dispatch/middleware/request_id.rb:21:in `call'
 rack (1.5.2) lib/rack/methodoverride.rb:21:in `call'
 rack (1.5.2) lib/rack/runtime.rb:17:in `call'
 activesupport (4.0.0) lib/active_support/cache/strategy/local_cache.rb:83:in `call'
 rack (1.5.2) lib/rack/lock.rb:17:in `call'
 actionpack (4.0.0) lib/action_dispatch/middleware/static.rb:64:in `call'
 railties (4.0.0) lib/rails/engine.rb:511:in `call'
 railties (4.0.0) lib/rails/application.rb:97:in `call'
 rack (1.5.2) lib/rack/content_length.rb:14:in `call'
 thin (1.5.1) lib/thin/connection.rb:81:in `block in pre_process'
 thin (1.5.1) lib/thin/connection.rb:79:in `pre_process'
 thin (1.5.1) lib/thin/connection.rb:54:in `process'
 thin (1.5.1) lib/thin/connection.rb:39:in `receive_data'
 eventmachine (1.0.3) lib/eventmachine.rb:187:in `run'
 thin (1.5.1) lib/thin/backends/base.rb:63:in `start'
 thin (1.5.1) lib/thin/server.rb:159:in `start'
 rack (1.5.2) lib/rack/handler/thin.rb:16:in `run'
 rack (1.5.2) lib/rack/server.rb:264:in `start'
 railties (4.0.0) lib/rails/commands/server.rb:84:in `start'
 railties (4.0.0) lib/rails/commands.rb:78:in `block in <top (required)>'
 railties (4.0.0) lib/rails/commands.rb:73:in `<top (required)>'
 bin/rails:4:in `<main>'

Я использую Mavericks OS X 10.9, поэтому не знаю, в этом ли проблема. Я перепробовал все, что мог, но ничего не получается. Я удалил и установил оба postgres и pg gem несколько раз.

Это мой файл database.yml

development:
  adapter: postgresql
  encoding: unicode
  database: metals-directory_development
  pool: 5
  username: 
  password: 
  template: template0
  host: localhost
  port: 5432

test: &test
  adapter: postgresql
  encoding: unicode
  database: metals-directory_test
  pool: 5
  username: 
  password: 
  template: template0
  host: localhost
  port: 5432

staging:
  adapter: postgresql
  encoding: unicode
  database: metals-directory_production
  pool: 5
  username:
  password:
  template: template0
  host: localhost

production:
  adapter: postgresql
  encoding: unicode
  database: metals-directory_production
  pool: 5
  username:
  password:
  template: template0
  host: localhost

cucumber:
  <<: *test
fadelakin
источник
2
попробуйте добавить 'host: localhost' в ваш файл database.yml, полученный от stackoverflow.com/a/10793186/919641
Сурендра Бобба
1
@trajan Я уже сделал это. Я даже использовал эту тему, когда впервые начал искать решение. Я разместил свой файл database.yml. Вы можете взглянуть на это. Может быть, это может помочь.
Фаделакин
покажи свой pg_hba.conf
Pronix
2
Не забудьте включить приложение postgres, если вы его используете.
Паван Катепалли
1
Спасибо, что напомнили мне включить приложение @PavanKatepalli! Хороший звонок;)
catch22

Ответы:

638

Это может быть так же просто, как устаревший файл PID . Это может произойти сбой в фоновом режиме, потому что ваш компьютер не завершил процесс завершения полностью, что означает, что postgres не удалил файл PID (идентификатор процесса).

PID-файл используется postgres для проверки того, что одновременно работает только один экземпляр сервера. Поэтому, когда он снова запускается, происходит сбой, поскольку уже существует файл PID, который сообщает postgres, что запущен другой экземпляр сервера (даже если он не запущен, он просто не смог завершить работу и удалить PID) ,

  1. Чтобы исправить это, удалите / переименуйте файл PID. Найдите каталог данных postgres. В macOS используется homebrew /usr/local/var/postgres/или /usr/local/var/log/другие системы, в которых он может быть /usr/var/postgres/.
  2. Чтобы убедиться, что это проблема, посмотрите на файл журнала ( server.log). На последних строках вы увидите:

ФАТАЛЬНО: файл блокировки "postmaster.pid" уже существует.
СОВЕТ: Другой почтмейстер (PID 347) работает в каталоге данных "/ usr / local / var / postgres"?

  1. Если так, rm postmaster.pid
  2. Перезагрузите ваш сервер. На Mac с помощью launchctl (с homebrew) следующие команды перезапустят сервер.

    launchctl unload homebrew.mxcl.postgresql.plist  
    launchctl load -w homebrew.mxcl.postgresql.plist

    ИЛИ на более новых версиях Brew

    brew services restart postgresql
Крис Слэйд
источник
24
# 2 - отличное предложение: «Проверьте server.log». Моя ошибка была фактически вызвана обновлением до Йосемити, журнал сервера сказал: FATAL: could not open directory "pg_tblspc": No such file or directory. Этот ответ помог мне с этой проблемой stackoverflow.com/questions/25970132/…
Пол Каплан
20
Я просто проголосовал за это, потому что он дал мне достаточно, чтобы решить проблему выжженной земли. Я удалил pg ( gem uninstall pg), удалил postgres ( brew uninstall postgres), а затем покопался в папке postgres, которая была в куче устаревших вещей ( rm -rf /usr/local/var/postgres). После перезагрузки brew install postgres, ln -sfv /usr/local/opt/postgresql/*.plist ~/Library/LaunchAgents, launchctl load ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist, и ARCHFLAGS="-arch x86_64" gem install pg. Я не знаю, сколько других решений я пробовал, прежде чем заставить это работать.
ИАМНАН
2
файл postmaster.opts совпадает с файлом postmaster.pid?
ARTLoe
31
Для более новых пользователей Brew команда для # 4brew services restart postgresql
streetlogics
7
Для меня (MAC, доморощенный) файл журнала был/usr/local/var/log/postgres.log
DZack
44

После долгих поисков и анализа я нашел решение, если вы используете Ubuntu, просто введите эту команду в свой терминал и нажмите Enter

sudo service postgresql restart

Это перезапустит ваш PostgreSQL, надеюсь, это будет полезно для вас.

Джай Кумар Раджпут
источник
3
Спасибо 1000 раз. Я только что обновил свою версию Ubuntu, и это исправлено для меня.
Маурисио Мораес
Несмотря на то, что этот вопрос относится к OSX Mavericks, это решение удобно для установок Ubuntu, когда происходит что-то странное в процессе миграции или запуска сервера.
Джером
39

Эта проблема возникает, когда postgres не закрывается должным образом. Вот как я решил эту проблему в три простых шага.

Шаг 1: Перейдите в каталог postgres.

Пользователи Mac найдут это в /usr/local/var/postgres, другие могут посмотреть /usr/var/postgres/.

Шаг 2: Удалите .pidфайл, выполнив эту команду.

rm postmaster.pid

Шаг 3: перезагрузите сервер

Пользователи Mac

brew services restart postgresql

Пользователи Linux

sudo service postgresql restart

Наконец перезапустите приложение, и все готово.

techdreams
источник
33

Мне удалось решить проблему, следуя ответу Криса Слейда, но для перезапуска сервера мне пришлось использовать следующие команды:

launchctl unload ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist

launchctl load ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist

что я нашел здесь (ответ Пьяммера внизу)

Андреа Герарди
источник
25

У вас установлен postgresql в вашей системе? Если нет, то смотрите Install postgresql . После успешной интеграции postgresql в вашу систему вы можете напечатать что-то подобное в системном терминале:

which psql
#=> /usr/bin/psql

После этого вам нужно создать пользователя и базу данных в postgresql следующим образом:

sudo su - postgres
psql

Тогда вы можете увидеть следующее в вашем терминале

postgres=#

Введите там:

CREATE USER yourname WITH PASSWORD 'passwordhere';
CREATE DATABASE metals-directory_production  WITH OWNER yourname;
GRANT ALL PRIVILEGES ON DATABASE metals-directory_production TO yourname;

После того, как вы это сделаете, вам нужно исправить database.yml. Вероятно, вам нужно что-то подобное:

development:
  adapter: postgresql
  encoding: unicode
  database: metals-directory_development
  pool: 5
  username: yourname
  password: passwordhere   ### password you have specified within psql
  host: localhost
  port: 5432               ### you can configure it in file postgresql.conf

Также, если у вас есть проблемы с postgresql, рекомендуется проверить pg_hba.conf

Михаил Давыденков
источник
1
Я установил его, но он находится в / usr / local / bin / psql, и когда я запускаю sudo -u postgres, он говорит sudo: неизвестный пользователь: postgres
fadelakin
psql должен работать, если вы хотите использовать pg в своем приложении. Попробуйте набрать в терминале psql metall-directory_development. Какие-либо результаты? Если нет, то попробуйте переустановить postgres, попробуйте это, например,
Михаил Давыденков
Когда я запускаю psql metall-directory_development, я получаю psql: не удается подключиться к серверу: нет такого файла или каталога. Работает ли сервер локально и принимает подключения через сокет домена Unix "/tmp/.s.PGSQL.5432"? Я начинающий программист, и я понятия не имею, что это значит. Я пытался переустановить Postgres много раз, но не повезло.
Фаделакин
23

Для того, чтобы исправить эти типы проблем с Postgres и работать с Postgres на Mac OSX, это, вероятно, ЛУЧШИЙ и САМЫЙ ПРОСТОЙ решение , которое я нашел до сих пор:

http://postgresapp.com/

Просто скачайте, установите и будьте счастливы :)

К.М. Ракибул Ислам
источник
19
  1. Удалить pg:

    gem uninstall pg
  2. Удалить postgres:

    brew uninstall postgres
  3. Разбейте папку postgres, которая может задержаться в куче устаревших вещей:

    rm -rf /usr/local/var/postgres
  4. Перезагрузка (возможно, ненужная)

  5. Переустановите pg:

    brew install postgres
  6. Мой комментарий в ответе Криса Слэйда начинается с трудного пути, теперь я пользуюсь услугами brew, которые упростили мою жизнь во многих отношениях:

    brew install services
  7. И начните с него pg:

    brew services start postgresql
  8. Переустановите драгоценный камень:

    gem install pg

И бобсюрункл.

IAmNaN
источник
3
Будьте осторожны с этим методом ... это подход выжженной земли, и он, скорее всего, уничтожит любые локальные базы данных, которые у вас есть. Взгляните на github.com/copiousfreetime/launchy, где вы могли бы сделать, lunchy stop postgresа затемlunchy start postgres
lacostenycoder
на Ubuntu, я считаю, sudo apt purge postgresqlили любого другого postgresqlpachage должно быть достаточно, и это разрушит все.
Фабрицио Бертольо
Я сделал это и теперь получаю следующую ошибку: postgresql_adapter.rb: 709: в `rescue in connect ': FATAL: база данных" project3_development "не существует (ActiveRecord :: NoDatabaseError). Что я должен делать ? Я действительно могу увидеть базу данных в rubymine.
Фрэнки Доул
13

проверьте файл postgresql.conf (on ubuntuнаходится в /etc/postgresql/XX/main/postgresql.conf ) и найдите строку, которая говорит:

listen_addresses="localhost"

попробуйте изменить это на:

listen_addresses="*"

он будет принимать все IP, затем проверьте строку, которая говорит:

port=5432

и проверьте, является ли тот же порт вашего database.yml, по умолчанию на моем postgresql-9.2 используйте 5433 вместо 5432 , не забудьте перезапустить сервер postgres,

Удачи!

Alexis
источник
Это была и моя проблема. Я подозреваю, что это произошло, потому что у меня уже была запущена 9.3, когда я пытался «обновить» (т.е. установить 9.5). Я предполагаю, что он пытался быть вежливым и настраивать себя для параллельной работы на другом порту, а не на существующую установку / процесс.
Джоэл Фоуз
12

Как описано @Magne, ошибка PG::ConnectionBad - could not connect to server: Connection refusedможет быть представлена ​​после обновления основной / вспомогательной версии (например, 9.5 -> 9.6или 9 -> 10) PostgreSQL.

Я получил эту ошибку после запуска brew upgrade postgresqlпосле выпуска PostgreSQL версии 9.6. Проблема в том, что для обновления основной / вспомогательной версии требуются дополнительные шаги для переноса старой даты в новую версию.

Как проверить, если это ваша проблема

Вы можете проверить, является ли это проблемой, проверив последнюю версию формулы brew PostgreSQL, установленную вместе с homebrew ...

$ brew info postgresql

/usr/local/Cellar/postgresql/9.5.4_1 (3,147 files, 35M)
Poured from bottle on 2016-10-14 at 13:33:28
/usr/local/Cellar/postgresql/9.6.1 (3,242 files, 36.4M) *
Poured from bottle on 2017-02-06 at 12:41:00

... а затем сравнивает его с текущим PG_VERSION

$ cat /usr/local/var/postgres/PG_VERSION
9.5

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

Как исправить (т.е. как обновить данные)

Инструкции ниже для обновления с 9,5 до 9,6. Измените номера версий в соответствии с вашим собственным обновлением

Шаг 1. Убедитесь, что PostgreSQL выключен:

$ launchctl unload ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist
# or, with Homebrew...
$ brew services stop postgresql

Шаг 2. Создайте новую нетронутую базу данных:

$ initdb /usr/local/var/postgres9.6 -E utf8

Шаг 3. Проверьте, каковы старые и новые двоичные версии:

$ ls /usr/local/Cellar/postgresql/
9.5.3   9.5.4   9.6.1

Обратите внимание, что в этом примере я обновляю двоичный файл 9.5.4 до двоичного файла 9.6.1.

Шаг 4. Перенесите текущие данные в новую базу данных с помощью утилиты pg_upgrade .

$ pg_upgrade \
  -d /usr/local/var/postgres \
  -D /usr/local/var/postgres9.6 \
  -b /usr/local/Cellar/postgresql/9.5.4/bin/ \
  -B /usr/local/Cellar/postgresql/9.6.1/bin/ \
  -v
  • -d флаг указывает текущий каталог данных
  • -D флаг указывает новый каталог данных, который будет создан
  • -b указывает старый двоичный файл
  • -B указывает новый бинарный файл, который мы обновляем

Шаг 5. Удалите старый каталог данных

$ mv /usr/local/var/postgres /usr/local/var/postgres9.5

Шаг 6. Переместите недавно созданный каталог данных туда, где его ожидает PostgreSQL

$ mv /usr/local/var/postgres9.6 /usr/local/var/postgres

Шаг 7. Запустите PostgreSQL снова

$ launchctl load ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist
# or, if you're running a current version of Homebrew
$ brew services start postgresql

Шаг 8. Если вы используете гем pg для Rails, вы должны перекомпилировать его, удалив и переустановив гем (пропустите этот шаг, если вы не используете гем pg)

$ gem uninstall pg
$ gem install pg

Шаг 9. (необязательно). После того, как вы убедились, что все работает нормально, вы можете запустить восстановление памяти на диске с помощью следующей команды:

brew cleanup postgresql

... и если вы чувствуете себя действительно смелым, вы можете удалить старый каталог данных PostgreSQL с помощью следующей команды

rm -rf /usr/local/var/postgres9.5/

(Этот ответ основан на отличном сообщении в блоге https://keita.blog/2016/01/09/homebrew-and-postgresql-9-5/ с некоторыми дополнениями)

Нил Аткинсон
источник
7

Как предложено выше, я просто открыл приложение Postgres на своем Mac, нажал кнопку «Открыть» Psql, закрыл psqlокно, перезапустил сервер rails в моем терминале, и он снова заработал, больше никаких ошибок.

Доверяй слону: http://postgresapp.com/

houstongolden
источник
6

Я получил ту же проблему после обновления моего Mac на Osx Movaje.

я нашел это решение:

Попробуйте сначала приведенную ниже командную строку в вашем терминале:

brew services restart postgresql

Если ничего не изменится:

ps aux | grep postgres

Если ничего не изменилось:

ls -ls | grep post

Последняя команда, чтобы исправить это, удалила файл блокировки postgres, выполнив от root:

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

а потом :

brew services restart postgresql

Из berziiii: https://github.com/ga-wdi-boston/capstone-project/issues/325

Надеюсь, что это поможет :)

С уважением !!

Basile
источник
5

Если вы столкнулись с этой проблемой после того, как brew upgradeобновили postgres до новой основной версии (от f.ex 9.3.0до 9.4.0или выше), сделайте следующее:

Исправление @ dmitrygusev с https://github.com/Homebrew/homebrew/issues/35240

Следующее официальное руководство по миграции [Postgresql] помогло:

brew switch postgres 9.3.5    # presuming you already installed 9.4.1
pg_dumpall > outputfile
launchctl unload ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist
mv /usr/local/var/postgres /usr/local/var/postgres.old
brew switch postgres 9.4.1
initdb -D /usr/local/var/postgres
psql -d postgres -f outputfile

Вот и все. Убедитесь, что импорт прошел успешно, затем удалите резервные копии:

rm outputfile
rm -Rf /usr/local/var/postgres.old

Проблема здесь заключается в том, что при обновлении основных версий postgres необходимо заново создать / перенести вашу базу данных. И, возможно, chownкаталоги или вручную позвонить initdb.

См. Также: Как обновить PostgreSQL с версии 9.5 до версии 9.6 без потери данных?


Некоторые другие советы, которые могут пригодиться, если вы не используете Homebrew:

Как остановить сервер PG вручную:

pg_ctl -D /usr/local/var/postgres -l /usr/local/var/postgres/server.log stop

Как запустить PG-сервер вручную:

pg_ctl -D /usr/local/var/postgres -l /usr/local/var/postgres/server.log start

Магне
источник
4

Найдите Postgres файл , он может быть в /usr/local/var/postgres/или /usr/var/postgres/и затем удалить postmaster.pidфайл , присутствующий в этой папке.

Авайс Шафкат
источник
3

положить host: localhostв database.ymlфайл и запустить эту команду:

rake db:create db:migrate  
Абель
источник
2

Пользователи Mac с приложением Postgres могут захотеть открыть приложение (выделите поиск Postgres или найдите значок слона в строке меню). Там вы можете увидеть красный крестик с сообщением: «Устаревший файл postmaster.pid». К сожалению, поиск в центре внимания не покажет местоположение этого файла. Нажмите «Настройки сервера ...» и в открывшемся диалоговом окне нажмите кнопку «Показать», чтобы открыть каталог данных. Перейдите в одну папку (для меня это была "var-10") и удалите postmaster.pidфайл.

Вернитесь в приложение Postgres и нажмите кнопку «Пуск». Этот красный X должен превратиться в зеленую галочку с сообщением «Выполняется». Теперь вы сможете успешно запускать команды Rails, как rails serverв терминале.

Настройки сервера приложений Postgres - Показать каталог данных

chemturion
источник
Это решило это для меня. Большое спасибо за решение! Это был процесс!
Бойд
2

Я только что столкнулся с этой проблемой сегодня вечером, работая над приложением rails, над которым я работал некоторое время. Моя проблема просто сводилась к тому, что мой сервер postgresql не работал .

Я подошел к верхней части экрана (я на Mac), щелкнул значок маленького слона и нажал «Пуск».

Оказывается наш сервер не был включен.

Надеюсь, это станет для кого-то простым решением.

solidstatejake
источник
1

Это был определенно ответ @Chris Slade, который помог мне.

Я написал небольшой скрипт, чтобы убить эти оставшиеся процессы, если они полезны:

kill_postgres() {
  if [[ $* -eq "" ]]; then
    echo "Usage: 'kill_postgres <db_name>' to kill remaining instances (Eg. 'kill_postgres my_app_development')"
  else
    gksudo echo "Granted sudo"
    pids="$(ps xa | grep postgres | grep $* | awk '{print $1}' | xargs)"
    if [[ $pids -eq "" ]]; then
      echo "Nothing to kill"
    else
      for pid in "${pids[@]}"
      do
        echo "Killing ${pid}"
        sudo kill $pid
        echo "Killed ${pid}"
      done
      kill_postgres $*
    fi
  fi
}
Августин Ридингер
источник
1

У меня была та же проблема на производстве (разработка работала), в моем случае сервер БД не находится на той же машине, что и приложение, поэтому, наконец, сработало просто выполнить миграцию, написав:

bundle exec rake db:migrate RAILS_ENV=production

а затем перезагрузите сервер и все заработало.

Лиа
источник
1

Я знаю, что уже поздно, но может кому-нибудь помочь. У меня была такая же проблема. Оказывается, я бы сделал две версии postgres 9.1 и 9.5. Я удалил 9.1 и 9.5 и снова установил 9.5, и это сработало для меня.

Даршан Чаухан
источник
1

Вы, вероятно, перезагрузили компьютер и забыли запустить приложение Postgres.

Призрак Оз
источник
1

У меня такая же проблема. Я проверяю последнюю строку PostgreSQLлог файлов в /var/log/postgresql. В файле /etc/postgresql/9.5/main/postgresql.conf был нераспознанный параметр конфигурации . Комментирование строки ошибки postgresql.confрешило мою проблему.

Хаджар Хомаюни
источник
1

Моя проблема была в моем файле application.yml . Моя база данных urlна herokuне использует порт 5342. Проверьте herokuконфигурации var DATABASE_URL. Удостоверьтесь, что это точно соответствует тому, что было в вашем application.yml для соответствующей базы данных.

NickDK
источник
1

У меня была та же проблема, это объяснение решило ее для меня: http://blog.55minutes.com/2013/09/postgresql-93-brew-upgrade/

Ключевым шагом было рассмотрение хвоста моего /usr/local/var/postgres/server.log , который позволил мне увидеть реальную проблему, заключающуюся в том, что я не полностью завершил процесс обновления PostgreSQL.

Бен Уилер
источник
Подобная ситуация здесь - ключом для меня тоже было посмотреть server.log. Нашел мой ответ здесь: stackoverflow.com/questions/25970132/…
Натан Уоллес
1

Я просто запускаю эту команду, sudo service postgresql restart и все снова работает.

kalibbala
источник
0

Я остановил сервер рельсов, побежал rake db:migrateи начал свой rails s.

thedanotto
источник
0

Я столкнулся с этой ошибкой после следующего, brew upgradeв котором postgresql был обновлен. Я нашел именно то, как исправить мою проблему из этого великого поста. Я смог восстановить и запустить postgres и даже перенести все существующие базы данных. https://coderwall.com/p/ti4amw/how-to-launch-postgresql-after-upgrade

Calaway
источник
0

У меня просто была эта проблема, и ни одно из предложенных решений не помогло мне. После долгих поисков я нашел решение. Это то, что сработало для меня.

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

pg_ctl -D /usr/local/var/postgres start && brew services start postgresql

Затем я запустил эту команду для доступа к postgres

psql postgres

И в приглашении postgres я набрал "\ du", чтобы получить список ролей.

postgres=# \du

Роль postgres отсутствовала, поэтому мне пришлось создать ее с помощью этой команды

CREATE ROLE POSTGRES WITH SUPERUSER CREATEDB CREATEUSER CREATEROLE REPLICATION BYPASSRLS ;

Это решило мою проблему, и я надеюсь, что это поможет кому-то еще.

luis.madrigal
источник
0

Вам не нужно удалять postmaster.pid файл, так как это может привести к повреждению данных.

Вариант? Просто killпроцесс (не используйтеkill -9 , просто обычное убийство будет делать).

Затем просто перезапустите сервер postgres, и все готово!

Вот шаги для достижения этого:

  1. Найдите и откройте postmaster.pidфайл (мой находится на Mac Sierra)

    vi ~/Library/Application\ Support/Postgres/var-10/postmaster.pid

  2. Скопируйте PID - это номер в первой строке postmaster.pidфайла

  3. Завершите процесс kill PID, например, если мой PID 381, я сделаюkill 381
  4. Перезапустите Postres - если используете brew, делайте brew services start postgresql. Или, если вы используете postgresapp, просто нажмите startкнопку
Руто Коллинз
источник
0

Менеджер пакетов Homebrew включает списки launchctl для автоматического запуска. Для получения дополнительной информации бегите brew info postgres.

Начать вручную:

pg_ctl -D /usr/local/var/postgres start

Остановить вручную:

pg_ctl -D /usr/local/var/postgres stop

Начать автоматически:

Msgstr "Чтобы запустить, запустите postgresql сейчас и перезапустите при входе в систему:"

brew services start postgresql

user3402754
источник