PG:: ConnectionBad-не удалось подключиться к серверу: отказано в подключении
каждый раз, когда я запускаю свой сервер 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 несколько раз.
Это моя база данных.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
может кто-нибудь помочь мне?
27 ответов:
это может быть так же просто, как черствый PID файл. Это может быть сбой молча, потому что ваш компьютер не завершил процесс выключения полностью, что означает postgres не удалить PID (идентификатор процесса) файл.
файл PID используется postgres, чтобы убедиться, что одновременно работает только один экземпляр сервера. Поэтому, когда он снова запускается, он терпит неудачу, потому что уже есть PID файл, который говорит postgres что другой экземпляр сервера был запущен (даже если он не работает, он просто не добрался до завершения работы и удаления PID).
- чтобы исправить это, удалите / переименуйте файл PID. Найдите каталог данных postgres. На MAC с помощью homebrew это
/usr/local/var/postgres/, другие системы это может быть/usr/var/postgres/.- чтобы убедиться, что это проблема, посмотрите на лог-файл (
server.log). На последних строках вы увидите:смертельный: файл блокировки " почтмейстер.пид" уже существует
Подсказка: другой почтмейстер (PID 347) работает в каталоге данных "/usr/local/var/postgres"?
- если да, то
rm postmaster.pidперезагрузите сервер. На mac с помощью launchctl (с homebrew) следующие команды перезапустят сервер.
launchctl unload homebrew.mxcl.postgresql.plist launchctl load -w homebrew.mxcl.postgresql.plistили на более новых версиях квас
brew services restart postgresql
после долгих поисков и анализа я нашел решение, если вы используете ubuntu просто напишите эту команду в своем терминале и нажмите enter
sudo service postgresql restartэто перезапустит ваш PostgreSQL, надеюсь, что это будет behelp для вас.
мне удалось решить проблему, следуя ответу Криса Слейда, но для перезагрузки сервера мне пришлось использовать следующие команды:
launchctl unload ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist launchctl load ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plistчто я нашел здесь (pjammer в самом низу)
чтобы исправить эти проблемы с Postgres и работать с Postgres on
Mac OSX, Это, наверное лучшие и самый простой решение, которое я нашел до сих пор:просто скачайте, установите и будьте счастливы :)
у вас есть postgresql установлен в вашей системе? Если нет, то смотрите установить 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
эта проблема возникает, когда 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наконец перезагрузите приложение, и вы хорошо идти.
удалить pg:
gem uninstall pgудалить postgres:
brew uninstall postgresNuke папка postgres, которая может задерживаться с кучей несвежих вещей его в:
rm -rf /usr/local/var/postgresперезагрузка (возможно, ненужных)
переустановить pg:
brew install postgresмой комментарий в ответе Криса Слейда начинается pg трудный путь, теперь я использую услуги brew, которые имеют упростил мою жизнь во многих отношениях:
brew install servicesи начните pg с него:
brew services start postgresqlпереустановите gem:
gem install pgи bobsyouruncle.
проверить файл postgresql.conf (on
ubuntu- в / etc/postgresql/X. X/main / postgresql.conf) и посмотрите на строку, которая говорит:listen_addresses="localhost"попробуйте изменить его на:
listen_addresses="*"он будет принимать все IP-адреса, затем проверьте строку, которая говорит:
port=5432и проверьте, является ли тот же порт вашей базы данных.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...
$ 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 gem для Rails, вы должны перекомпилировать удаление и переустановка gem (пропустите этот шаг, если вы не используете PG gem)
$ gem uninstall pg $ gem install pgШаг 9.(необязательно) после того, как вы убедили себя, что все работает нормально, вы можете запустить восстановить некоторое дисковое пространство с помощью следующей команды:
brew cleanup postgresql...и если вы чувствуете себя действительно храбрым, вы можете удалить старый каталог данных PostgreSQL с помощью следующей команды
rm -rf /usr/local/var/postgres9.5/(этот ответ на основе отличной записи в блоге https://keita.блог/2016/01/09/homebrew-and-postgresql-9-5/ С некоторыми дополнениями)
как было предложено выше, я только что открыл Сервер Приложений на моем Mac, нажмите Открыть
Psql, закрыт
если вы попали в эту проблему после выполнения
brew upgradeкоторый обновил postgres до новой основной версии (f. ex9.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 stopHow to запустите PG server вручную:
pg_ctl -D /usr/local/var/postgres -l /usr/local/var/postgres/server.log start
поставить
host: localhostindatabase.ymlфайл и выполните следующую команду:rake db:create db:migrate
найдите свой файл postgres он может быть в
/usr/local/var/postgres/или/usr/var/postgres/а затем удалитьpostmaster.pidфайл присутствует в этой папке.
Это был определенно ответ @ 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 }' | 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 }
У меня была такая же проблема в производстве (разработка все работало), в моем случае сервер БД не на той же машине, что и приложение, поэтому, наконец, то, что сработало, просто нужно перенести, написав:
bundle exec rake db:migrate RAILS_ENV=productionа затем перезагрузить сервер и все работало.
Я знаю, что это поздно, но может кому-то помочь. У меня была такая же проблема. Оказывается, у меня было две версии postgres 9.1 и 9.5. Я удалил 9.1 и 9.5 и снова установил 9.5, и это сработало для меня.
у меня была та же проблема. Я проверяю последнюю строку
PostgreSQLфайлы журнала в/var/log/postgresql. В файле в/etc/postgresql и/9.5/главная/базы данных PostgreSQL.conf. Комментируя строку ошибки вpostgresql.confрешена моя проблема.
моя проблема была в моей приложение.в формате YML. Моя база данных
urlonherokuне использовал порт 5342. Проверьте вашherokuconfigvar DATABASE_URL. Убедитесь, что совпадает с вашим приложение.в формате YML для соответствующей базы данных.
У меня была такая же проблема, это объяснение решило ее для меня:http://blog.55minutes.com/2013/09/postgresql-93-brew-upgrade/
ключевой шаг смотрел на хвост моего / usr / local/var/postgres / server.журнал , это позволило мне увидеть, в чем была настоящая проблема, которая заключалась в том, что я не полностью завершил процесс обновления PostgreSQL
пользователи Mac с приложением Postgres могут захотеть открыть приложение (spotlight search Postgres или найти значок слона в строке меню). Там вы можете увидеть Красный Крест с сообщением: "несвежий почтмейстер.пид файл". К сожалению, поиск spotlight не покажет местоположение этого файла. Нажмите Кнопку " Настройки Сервера...", и в открывшемся диалоговом окне нажмите кнопку" Показать", чтобы открыть каталог данных. Перейдите в одну папку (для меня это был "var-10") и удалите
postmaster.pidфайл.вернитесь в приложение Postgres и нажмите кнопку Пуск. Этот красный X должен превратиться в зеленую галочку с сообщением "работает". Теперь вы должны иметь возможность успешно запускать команды Rails, такие как
rails serverв терминале.
я столкнулся с этой ошибкой после
brew upgradeв котором postgresql был обновлен. Я нашел точно, как исправить мою проблему с этого Великого поста. Я смог восстановить и запустить postgres и даже перенести все мои существующие базы данных. https://coderwall.com/p/ti4amw/how-to-launch-postgresql-after-upgrade
у меня просто была эта проблема, и ни одно из предложенных решений не сработало для меня. После долгих поисков в Интернете я нашел решение. Это то, что сработало для меня.
во-первых, я должен был запустить эту команду, чтобы запустить сервер, и я предполагаю, установить расположение файла конфигурации.
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 ;это решило мою проблему, и я надеюсь, что это поможет кому-то еще.
вам не нужно удалять
? Простоpostmaster.pidфайл, так как это может вызвать повреждение данных.killпроцесс (не используйтеkill -9, просто обычное убийство будет делать).затем просто перезагрузите сервер postgres, и вы хорошо идти!
вот шаги для достижения этого:
найдите и откройте
postmaster.pidфайл (мой находится на Mac Сьерра)
vi ~/Library/Application\ Support/Postgres/var-10/postmaster.pidскопируйте PID-это номер в первой строке
postmaster.pidfile- убить процесс с
kill PID, например, если мой PID 381, я сделаюkill 381- перезагрузка postres предлагает - если используете самогон, сделать
brew services start postgresql. Или если вы используете postgresapp, просто нажмите
