Каждый раз, когда я запускаю свой сервер 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
Ответы:
Это может быть так же просто, как устаревший файл PID . Это может произойти сбой в фоновом режиме, потому что ваш компьютер не завершил процесс завершения полностью, что означает, что postgres не удалил файл PID (идентификатор процесса).
PID-файл используется postgres для проверки того, что одновременно работает только один экземпляр сервера. Поэтому, когда он снова запускается, происходит сбой, поскольку уже существует файл PID, который сообщает postgres, что запущен другой экземпляр сервера (даже если он не запущен, он просто не смог завершить работу и удалить PID) ,
/usr/local/var/postgres/
или/usr/local/var/log/
другие системы, в которых он может быть/usr/var/postgres/
.server.log
). На последних строках вы увидите:rm postmaster.pid
Перезагрузите ваш сервер. На Mac с помощью launchctl (с homebrew) следующие команды перезапустят сервер.
ИЛИ на более новых версиях Brew
источник
FATAL: could not open directory "pg_tblspc": No such file or directory
. Этот ответ помог мне с этой проблемой stackoverflow.com/questions/25970132/…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
. Я не знаю, сколько других решений я пробовал, прежде чем заставить это работать.brew services restart postgresql
/usr/local/var/log/postgres.log
После долгих поисков и анализа я нашел решение, если вы используете Ubuntu, просто введите эту команду в свой терминал и нажмите Enter
Это перезапустит ваш PostgreSQL, надеюсь, это будет полезно для вас.
источник
Эта проблема возникает, когда postgres не закрывается должным образом. Вот как я решил эту проблему в три простых шага.
Шаг 1: Перейдите в каталог postgres.
Пользователи Mac найдут это в
/usr/local/var/postgres
, другие могут посмотреть/usr/var/postgres/
.Шаг 2: Удалите
.pid
файл, выполнив эту команду.Шаг 3: перезагрузите сервер
Пользователи Mac
Пользователи Linux
Наконец перезапустите приложение, и все готово.
источник
Мне удалось решить проблему, следуя ответу Криса Слейда, но для перезапуска сервера мне пришлось использовать следующие команды:
что я нашел здесь (ответ Пьяммера внизу)
источник
У вас установлен postgresql в вашей системе? Если нет, то смотрите Install postgresql . После успешной интеграции postgresql в вашу систему вы можете напечатать что-то подобное в системном терминале:
После этого вам нужно создать пользователя и базу данных в postgresql следующим образом:
Тогда вы можете увидеть следующее в вашем терминале
Введите там:
После того, как вы это сделаете, вам нужно исправить
database.yml
. Вероятно, вам нужно что-то подобное:Также, если у вас есть проблемы с postgresql, рекомендуется проверить pg_hba.conf
источник
Для того, чтобы исправить эти типы проблем с Postgres и работать с Postgres на
Mac OSX
, это, вероятно, ЛУЧШИЙ и САМЫЙ ПРОСТОЙ решение , которое я нашел до сих пор:http://postgresapp.com/
Просто скачайте, установите и будьте счастливы :)
источник
Удалить pg:
Удалить postgres:
Разбейте папку postgres, которая может задержаться в куче устаревших вещей:
Перезагрузка (возможно, ненужная)
Переустановите pg:
Мой комментарий в ответе Криса Слэйда начинается с трудного пути, теперь я пользуюсь услугами brew, которые упростили мою жизнь во многих отношениях:
И начните с него pg:
Переустановите драгоценный камень:
И бобсюрункл.
источник
lunchy stop postgres
а затемlunchy start postgres
sudo apt purge postgresql
или любого другогоpostgresql
pachage должно быть достаточно, и это разрушит все.проверьте файл postgresql.conf (on
ubuntu
находится в /etc/postgresql/XX/main/postgresql.conf ) и найдите строку, которая говорит:попробуйте изменить это на:
он будет принимать все IP, затем проверьте строку, которая говорит:
и проверьте, является ли тот же порт вашего database.yml, по умолчанию на моем postgresql-9.2 используйте 5433 вместо 5432 , не забудьте перезапустить сервер postgres,
Удачи!
источник
Как описано @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 ...
... а затем сравнивает его с текущим PG_VERSION
Если значение PG_VERSION меньше, чем в последней формуле brew, а разница заключается в изменении основной / вспомогательной версии, то это, вероятно, ваша проблема.
Как исправить (т.е. как обновить данные)
Инструкции ниже для обновления с 9,5 до 9,6. Измените номера версий в соответствии с вашим собственным обновлением
Шаг 1. Убедитесь, что PostgreSQL выключен:
Шаг 2. Создайте новую нетронутую базу данных:
Шаг 3. Проверьте, каковы старые и новые двоичные версии:
Обратите внимание, что в этом примере я обновляю двоичный файл 9.5.4 до двоичного файла 9.6.1.
Шаг 4. Перенесите текущие данные в новую базу данных с помощью утилиты pg_upgrade .
-d
флаг указывает текущий каталог данных-D
флаг указывает новый каталог данных, который будет создан-b
указывает старый двоичный файл-B
указывает новый бинарный файл, который мы обновляемШаг 5. Удалите старый каталог данных
Шаг 6. Переместите недавно созданный каталог данных туда, где его ожидает PostgreSQL
Шаг 7. Запустите PostgreSQL снова
Шаг 8. Если вы используете гем pg для Rails, вы должны перекомпилировать его, удалив и переустановив гем (пропустите этот шаг, если вы не используете гем pg)
Шаг 9. (необязательно). После того, как вы убедились, что все работает нормально, вы можете запустить восстановление памяти на диске с помощью следующей команды:
... и если вы чувствуете себя действительно смелым, вы можете удалить старый каталог данных PostgreSQL с помощью следующей команды
(Этот ответ основан на отличном сообщении в блоге https://keita.blog/2016/01/09/homebrew-and-postgresql-9-5/ с некоторыми дополнениями)
источник
Это то, что действительно помогло мне.
Ссылка: http://alumni.lewagon.org/questions/60
источник
Как предложено выше, я просто открыл приложение Postgres на своем Mac, нажал кнопку «Открыть»
Psql
, закрылpsql
окно, перезапустил сервер rails в моем терминале, и он снова заработал, больше никаких ошибок.Доверяй слону: http://postgresapp.com/
источник
Я получил ту же проблему после обновления моего Mac на Osx Movaje.
я нашел это решение:
Попробуйте сначала приведенную ниже командную строку в вашем терминале:
Если ничего не изменится:
Если ничего не изменилось:
Последняя команда, чтобы исправить это, удалила файл блокировки postgres, выполнив от root:
а потом :
Из berziiii: https://github.com/ga-wdi-boston/capstone-project/issues/325
Надеюсь, что это поможет :)
С уважением !!
источник
Если вы столкнулись с этой проблемой после того, как
brew upgrade
обновили postgres до новой основной версии (от f.ex9.3.0
до9.4.0
или выше), сделайте следующее:Проблема здесь заключается в том, что при обновлении основных версий 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
источник
Найдите Postgres файл , он может быть в
/usr/local/var/postgres/
или/usr/var/postgres/
и затем удалитьpostmaster.pid
файл , присутствующий в этой папке.источник
положить
host: localhost
вdatabase.yml
файл и запустить эту команду:источник
Пользователи Mac с приложением Postgres могут захотеть открыть приложение (выделите поиск Postgres или найдите значок слона в строке меню). Там вы можете увидеть красный крестик с сообщением: «Устаревший файл postmaster.pid». К сожалению, поиск в центре внимания не покажет местоположение этого файла. Нажмите «Настройки сервера ...» и в открывшемся диалоговом окне нажмите кнопку «Показать», чтобы открыть каталог данных. Перейдите в одну папку (для меня это была "var-10") и удалите
postmaster.pid
файл.Вернитесь в приложение Postgres и нажмите кнопку «Пуск». Этот красный X должен превратиться в зеленую галочку с сообщением «Выполняется». Теперь вы сможете успешно запускать команды Rails, как
rails server
в терминале.источник
Я только что столкнулся с этой проблемой сегодня вечером, работая над приложением rails, над которым я работал некоторое время. Моя проблема просто сводилась к тому, что мой сервер postgresql не работал .
Я подошел к верхней части экрана (я на Mac), щелкнул значок маленького слона и нажал «Пуск».
Оказывается наш сервер не был включен.
Надеюсь, это станет для кого-то простым решением.
источник
Это был определенно ответ @Chris Slade, который помог мне.
Я написал небольшой скрипт, чтобы убить эти оставшиеся процессы, если они полезны:
источник
У меня была та же проблема на производстве (разработка работала), в моем случае сервер БД не находится на той же машине, что и приложение, поэтому, наконец, сработало просто выполнить миграцию, написав:
а затем перезагрузите сервер и все заработало.
источник
Я знаю, что уже поздно, но может кому-нибудь помочь. У меня была такая же проблема. Оказывается, я бы сделал две версии postgres 9.1 и 9.5. Я удалил 9.1 и 9.5 и снова установил 9.5, и это сработало для меня.
источник
Вы, вероятно, перезагрузили компьютер и забыли запустить приложение Postgres.
источник
У меня такая же проблема. Я проверяю последнюю строку
PostgreSQL
лог файлов в/var/log/postgresql
. В файле /etc/postgresql/9.5/main/postgresql.conf был нераспознанный параметр конфигурации . Комментирование строки ошибкиpostgresql.conf
решило мою проблему.источник
Моя проблема была в моем файле application.yml . Моя база данных
url
наheroku
не использует порт 5342. Проверьтеheroku
конфигурацииvar DATABASE_URL
. Удостоверьтесь, что это точно соответствует тому, что было в вашем application.yml для соответствующей базы данных.источник
У меня была та же проблема, это объяснение решило ее для меня: http://blog.55minutes.com/2013/09/postgresql-93-brew-upgrade/
Ключевым шагом было рассмотрение хвоста моего /usr/local/var/postgres/server.log , который позволил мне увидеть реальную проблему, заключающуюся в том, что я не полностью завершил процесс обновления PostgreSQL.
источник
server.log
. Нашел мой ответ здесь: stackoverflow.com/questions/25970132/…Я просто запускаю эту команду,
sudo service postgresql restart
и все снова работает.источник
Я остановил сервер рельсов, побежал
rake db:migrate
и начал свойrails s
.источник
Я столкнулся с этой ошибкой после следующего,
brew upgrade
в котором postgresql был обновлен. Я нашел именно то, как исправить мою проблему из этого великого поста. Я смог восстановить и запустить postgres и даже перенести все существующие базы данных. https://coderwall.com/p/ti4amw/how-to-launch-postgresql-after-upgradeисточник
У меня просто была эта проблема, и ни одно из предложенных решений не помогло мне. После долгих поисков я нашел решение. Это то, что сработало для меня.
Сначала мне нужно было запустить эту команду, чтобы запустить сервер, и я предполагаю установить местоположение файла конфигурации.
Затем я запустил эту команду для доступа к postgres
И в приглашении postgres я набрал "\ du", чтобы получить список ролей.
Роль postgres отсутствовала, поэтому мне пришлось создать ее с помощью этой команды
Это решило мою проблему, и я надеюсь, что это поможет кому-то еще.
источник
Вам не нужно удалять
postmaster.pid
файл, так как это может привести к повреждению данных.Вариант? Просто
kill
процесс (не используйтеkill -9
, просто обычное убийство будет делать).Затем просто перезапустите сервер postgres, и все готово!
Вот шаги для достижения этого:
Найдите и откройте
postmaster.pid
файл (мой находится на Mac Sierra)vi ~/Library/Application\ Support/Postgres/var-10/postmaster.pid
Скопируйте PID - это номер в первой строке
postmaster.pid
файлаkill PID
, например, если мой PID 381, я сделаюkill 381
brew services start postgresql
. Или, если вы используете postgresapp, просто нажмитеstart
кнопкуисточник
Менеджер пакетов 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
источник