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

2
спробуйте додати «хост: локальний» в вашому database.yml, отримав від цього stackoverflow.com/a/10793186/919641
Сурендра Bobba

1
@trajan Я вже це робив. Я навіть використовував цю нитку, коли вперше почав досліджувати рішення. Я опублікував свій файл database.yml. Ви можете поглянути на це. Можливо, це може допомогти.
fadelakin

покажіть свій pg_hba.conf
Пронікс

2
Не забудьте увімкнути додаток postgres, якщо ви його використовуєте.
Pavan Katepalli

1
Дякуємо, що нагадали ввімкнути додаток @PavanKatepalli! Добрий дзвінок;)
catch22

Відповіді:


638

Це може бути таким же простим, як несвіжий PID-файл . Це може вийти з ладу, оскільки ваш комп'ютер повністю не завершив процес відключення, що означає, що постгреси не видалили файл 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 ). На останніх рядках ви побачите:

FATAL: файл блокування "postmaster.pid" вже існує
Підказка: Чи працює інший поштовий майстер (PID 347) у каталозі даних "/ usr / local / var / postgres"?

  1. Якщо так, rm postmaster.pid
  2. Перезавантажте сервер. На mac за допомогою startctl (з домашньою мовою) наступні команди перезавантажать сервер.

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

    АБО на новіших версіях Brew

    brew services restart postgresql

24
№2 - чудова пропозиція: "Перевірити сервер.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. Я не знаю, скільки інших рішень я спробував, перш ніж це почати працювати.
IAmNaN

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

Ця проблема виникає, коли постгреси не вимикаються належним чином. Ось як я вирішив це питання за три простих кроки.

Крок 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

Нарешті перезапустіть додаток, і ви готові йти.


33

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

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

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

що я знайшов тут (відповідь pjammer внизу)


25

Чи встановлений у вашій системі 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


1
У мене він встановлений, але розташування знаходиться в / usr / local / bin / psql, і коли я запускаю sudo -u postgres, він говорить sudo: невідомий користувач: postgres
fadelakin

psql повинен працювати, якщо ви хочете використовувати pg у своєму додатку. Спробуйте ввести термінальний psql metal-directory_development. Будь-які результати? Якщо ні, то спробуйте перевстановити postgres, спробуйте це, наприклад,
Михайло Давиденков

Коли я запускаю psql metal-directory_development, я отримую psql: не вдалося підключитися до сервера: Немає такого файлу чи каталогу. Сервер працює локально та приймає з'єднання в сокеті домену Unix "/tmp/.s.PGSQL.5432"? Я програміст для початківців рейок і не маю поняття, що це означає. Я багато разів намагався перевстановити postgres, але не пощастило.
fadelakin

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 install services
  7. І почніть з нього pg:

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

    gem install pg

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


3
Будьте обережні з цим методом ... це підхід до випаленої землі і, швидше за все, знищить будь-які місцеві dbs, які у вас є. Погляньте на github.com/copiousfreetime/launchy, де ви могли б зробити, lunchy stop postgresа за нимlunchy start postgres
lacostenycoder

Я вважаю, що на ubuntu sudo apt purge postgresqlабо будь-який інший postgresqlпакунок має бути достатньо, і це знищить усе.
Фабріціо Бертоліо

Я зробив це і тепер отримую таку помилку: postgresql_adapter.rb: 709: у `рятуванні підключення ': FATAL: база даних" project3_development "не існує (ActiveRecord :: NoDatabaseError). Що я повинен зробити ? Я насправді бачу базу даних в рубіне.
Френкі Дул

13

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

listen_addresses="localhost"

спробуйте змінити його на:

listen_addresses="*"

це буде прийняття кожного IP-адреси, наступний перевірте рядок, який говорить:

port=5432

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

Щасти!


Це була і моя проблема. Я підозрюю, що це сталося тому, що я вже працював 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. Проблема полягає в тому, що основні та незначні оновлення версії потребують додаткових кроків для переміщення старої дати до нової версії.

Як перевірити, чи це ваша проблема

Ви можете перевірити, чи це проблема, перевіривши останню формулу варіння 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 менше останньої формули пивоваріння, а різниця - це основна / незначна зміна версії, то це, мабуть, ваша проблема.

Як виправити (тобто як оновити дані)

Нижче наведені інструкції щодо оновлення з 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, вам слід перекомпілювати, видаливши та перевстановивши дорогоцінний камінь (пропустіть цей крок, якщо ви не використовуєте gg gg)

$ 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вікно, перезапустив сервер рейкових систем у своєму терміналі, і він знову працював, більше помилок не було.

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


6

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

я знайшов це рішення:

Спробуйте спочатку в наступному командному рядку у своєму терміналі:

brew services restart postgresql

Якщо нічого не зміниться:

ps aux | grep postgres

Якщо все одно нічого не зміниться:

ls -ls | grep post

Остання команда, щоб виправити її, видалила файл блокування постгресів, виконавши з root:

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

і потім :

brew services restart postgresql

Від berziiii: https://github.com/ga-wdi-boston/capstone-project/isissue/325

Сподіваюся, що це допоможе :)

З повагою !!


5

Якщо ви brew upgradeвирішили цю проблему після того, як оновили постгреси 9.3.0до нової основної версії (f.ex до 9.4.0або вище), зробіть це:

Виправлення @ dmitrygusev з https://github.com/Homebrew/homebrew/isissue/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

Проблема тут полягає в тому, що для основного оновлення постгресів до версії потрібно відтворити / перемістити вашу базу даних. І, можливо, 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 або знайти піктограму слона на панелі меню). У ній ви можете побачити червоний X із повідомленням: "Старий файл postmaster.pid". На жаль, пошук у центрі уваги не покаже розташування цього файлу. Клацніть "Налаштування сервера ...", а в діалоговому вікні, що відкрилося, натисніть кнопку "Показати", щоб відкрити Каталог даних. Перейдіть до однієї папки (для мене це було "var-10") та видалітьpostmaster.pid файл.

Поверніться до програми Postgres і натисніть кнопку «Пуск». Цей червоний X повинен перетворитись на зелену галочку із повідомленням "Запуск". Тепер ви повинні мати змогу успішно виконувати команди Rails, як rails serverу терміналі.

Налаштування сервера додатків Postgres - Показати каталог даних


Це вирішило це для мене. Дякую за рішення! Це був процес!
хлопець

2

У мене сьогодні була ця проблема сьогодні ввечері, працюючи над додатком рейки, над яким я працював деякий час. Моя проблема просто зводилася до того, що мій сервер postgresql не працював .

Я перейшов у верхню частину екрана (я на Mac) і клацнув піктограму маленького слона і натиснув «Почати».

Звертається, наш сервер не був включений.

Сподіваємось, це забезпечує просте рішення для когось.


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 для відповідної бази даних.


1

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

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


Аналогічна ситуація тут - ключовою для мене також було подивитися server.log. Знайшов тут свою відповідь: stackoverflow.com/questions/25970132/…
Натан Уоллес


0

Я зупинив сервер рейки, побіг rake db:migrateі запустив свій rails s.


0

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


0

У мене просто була ця проблема, і жодне із запропонованих рішень не працювало на мене. Після багатьох гуглів я знайшов рішення. Це те, що працювало для мене.

По-перше, мені довелося запустити цю команду для запуску сервера, і я здогадуюсь встановити розташування файлу config.

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

Потім я запустив цю команду для доступу до postgres

psql postgres

І в підказці postgres я тоді набрав "\ du", щоб перелічити ролі

postgres=# \du

Роль постгресу відсутня, тому мені довелося створити її за допомогою цієї команди

CREATE ROLE POSTGRES WITH SUPERUSER CREATEDB CREATEUSER CREATEROLE REPLICATION BYPASSRLS ;

Це вирішило мою проблему, і я сподіваюся, що це допоможе комусь іншому.


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 services start postgresql. Або якщо ви використовуєте postgresapp, просто натисніть startкнопку

0

Менеджер пакунків Homebrew включає в себе списки startctl, які запускаються автоматично. Для отримання додаткової інформації запустітьbrew info postgres .

Почніть вручну:

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

Зупинка вручну:

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

Почніть автоматично:

"Щоб запустити запуск postgresql зараз і перезапустити при вході в систему:"

brew services start postgresql

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.