PG :: ConnectionBad - tidak dapat terhubung ke server: Koneksi ditolak

271

Setiap kali saya menjalankan server 4.0 rails saya, saya mendapatkan output ini.

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>'

Saya menjalankan Mavericks OS X 10.9 jadi saya tidak tahu apakah itu masalahnya. Saya sudah mencoba semua yang saya bisa tetapi tampaknya tidak ada yang berhasil. Saya telah menghapus dan menginstal postgres dan pg gem beberapa kali sekarang.

Ini adalah file database.yml saya

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
sumber
2
coba tambahkan 'host: localhost' di database.yml Anda, dapatkan ini dari stackoverflow.com/a/10793186/919641
Surendra Bobba
1
@ Trajan saya sudah melakukannya. Saya bahkan menggunakan utas itu ketika saya mulai mencari solusi. Saya telah memposting file database.yml saya. Anda bisa melihatnya. Mungkin itu bisa membantu.
fadelakin
perlihatkan pg_hba.conf Anda
Pronix
2
Jangan lupa untuk mengaktifkan aplikasi postgres jika Anda menggunakannya.
Pavan Katepalli
1
Terima kasih telah mengingatkan saya menyalakan aplikasi @PavanKatepalli! Panggilan bagus;)
catch22

Jawaban:

638

Ini bisa sesederhana file PID basi . Ini bisa gagal secara diam-diam karena komputer Anda tidak menyelesaikan proses shutdown sepenuhnya yang berarti postgres tidak menghapus file PID (id proses).

File PID digunakan oleh postgres untuk memastikan hanya satu instance server yang berjalan pada satu waktu. Jadi ketika mulai lagi, itu gagal karena sudah ada file PID yang memberitahu postgres bahwa instance server lain sudah dimulai (walaupun tidak berjalan, ia tidak bisa mematikan dan menghapus PID) .

  1. Untuk memperbaikinya hapus / ganti nama file PID. Temukan direktori data postgres. Di macOS menggunakan homebrew tempatnya /usr/local/var/postgres/, atau /usr/local/var/log/sistem lain mungkin /usr/var/postgres/.
  2. Untuk memastikan ini masalahnya, lihat file log ( server.log). Pada baris terakhir Anda akan melihat:

FATAL: file kunci "postmaster.pid" sudah ada
PETUNJUK: Apakah postmaster lain (PID 347) berjalan di direktori data "/ usr / local / var / postgres"?

  1. Jika begitu, rm postmaster.pid
  2. Mulai ulang server Anda. Pada mac yang menggunakan launchctl (dengan homebrew) perintah berikut ini akan me-restart server.

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

    ATAU pada versi Brew yang lebih baru

    brew services restart postgresql
Chris Slade
sumber
24
# 2 adalah saran yang bagus: "Periksa server.log". Kesalahan saya benar-benar disebabkan oleh upgrade ke Yosemite, log server mengatakan: FATAL: could not open directory "pg_tblspc": No such file or directory. Jawaban ini membantu saya dengan masalah itu stackoverflow.com/questions/25970132/…
Paul Kaplan
20
Saya baru saja mengangkat ini karena memberi saya cukup untuk memperbaiki masalah gaya bumi hangus. Saya uninstall pg ( gem uninstall pg), uninstall postgres ( brew uninstall postgres), lalu nuked folder postgres yang masih tersisa dengan sekelompok barang basi di dalamnya ( rm -rf /usr/local/var/postgres). Setelah reboot brew install postgres, ln -sfv /usr/local/opt/postgresql/*.plist ~/Library/LaunchAgents, launchctl load ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist, dan ARCHFLAGS="-arch x86_64" gem install pg. Saya tidak tahu berapa banyak solusi lain yang saya coba sebelum menjalankannya.
IAmNaN
2
Apakah file postmaster.opts sama dengan file postmaster.pid?
ARTLoe
31
Untuk pengguna Brew yang lebih baru, perintah untuk # 4 adalahbrew services restart postgresql
streetlogics
7
Bagi saya (MAC, homebrew) file log-nya/usr/local/var/log/postgres.log
DZack
44

Setelah banyak pencarian dan analisis, saya menemukan solusi jika Anda menggunakan ubuntu cukup tulis perintah ini di terminal Anda dan tekan enter

sudo service postgresql restart

Ini akan memulai kembali PostgreSQL Anda, saya harap ini akan membantu Anda.

Jai Kumar Rajput
sumber
3
Terima kasih 1000 kali. Saya baru saja memutakhirkan versi ubuntu saya dan ini diperbaiki untuk saya.
Mauricio Moraes
Meskipun pertanyaannya merujuk pada OSX Mavericks, slution ini berguna untuk instalasi Ubuntu ketika sesuatu yang aneh terjadi dalam migrasi atau startup server.
Jerome
39

Masalah ini muncul ketika postgres tidak dimatikan dengan benar. Inilah cara saya mengatasi masalah ini dalam tiga langkah sederhana.

Langkah 1: Buka direktori postgres Anda

Pengguna Mac akan menemukan ini /usr/local/var/postgres, orang lain mungkin melihat /usr/var/postgres/.

Langkah 2: Hapus .pidfile dengan menjalankan perintah ini.

rm postmaster.pid

Langkah 3: Mulai ulang server Anda

Pengguna Mac

brew services restart postgresql

Pengguna Linux

sudo service postgresql restart

Akhirnya restart aplikasi Anda dan Anda siap melakukannya.

techdreams
sumber
33

Saya telah berhasil menyelesaikan masalah dengan mengikuti jawaban Chris Slade, tetapi untuk me-restart server, saya harus menggunakan perintah berikut:

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

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

yang saya temukan di sini (jawaban pjammer di bagian bawah)

Andrea Gherardi
sumber
25

Apakah Anda menginstal postgresql dalam sistem Anda? Jika tidak, maka tonton Instal postgresql . Setelah Anda berhasil mengintegrasikan postgresql ke sistem Anda, Anda dapat mengetikkan sesuatu seperti itu di terminal sistem Anda:

which psql
#=> /usr/bin/psql

Setelah itu Anda perlu membuat pengguna dan database di postgresql seperti ini:

sudo su - postgres
psql

Kemudian Anda dapat melihat yang berikut di dalam terminal Anda

postgres=#

Ketik di sana:

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

Setelah Anda melakukan ini, maka Anda perlu memperbaiki database.yml. Mungkin Anda membutuhkan sesuatu seperti itu:

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

Juga jika Anda memiliki masalah dengan postgresql, ada baiknya memeriksa pg_hba.conf

Mihail Davydenkov
sumber
1
Saya sudah menginstalnya tetapi lokasinya di / usr / local / bin / psql dan ketika saya menjalankan sudo -u postgres dikatakan sudo: pengguna tidak diketahui: postgres
fadelakin
psql akan berfungsi jika Anda ingin menggunakan pg di aplikasi Anda. Coba ketik terminal psql logam-directory_development. Adakah hasil? Jika tidak, maka coba instal ulang postgres coba ini misalnya
Mihail Davydenkov
Ketika saya menjalankan psql logam-directory_development saya mendapatkan psql: tidak dapat terhubung ke server: Tidak ada file atau direktori seperti itu Apakah server berjalan secara lokal dan menerima koneksi pada soket domain Unix "/tmp/.s.PGSQL.5432"? Saya seorang programmer pemula dan saya tidak tahu apa artinya itu. Saya sudah mencoba menginstal ulang postgres berkali-kali tetapi tidak berhasil.
fadelakin
23

Untuk memperbaiki jenis ini masalah dengan Postgres dan bekerja dengan Postgres pada Mac OSX, ini mungkin adalah terbaik dan termudah solusi yang saya temukan sejauh ini:

http://postgresapp.com/

Cukup unduh, instal, dan bahagia :)

KM Rakibul Islam
sumber
19
  1. Copot pg:

    gem uninstall pg
  2. Copot postgres:

    brew uninstall postgres
  3. Nuke folder postgres yang mungkin masih melekat dengan banyak barang basi di:

    rm -rf /usr/local/var/postgres
  4. Mulai ulang (mungkin tidak perlu)

  5. Instal ulang pg:

    brew install postgres
  6. Komentar saya dalam jawaban Chris Slade dimulai dengan cara yang sulit, sekarang saya menggunakan layanan minuman yang telah menyederhanakan hidup saya dalam banyak hal:

    brew install services
  7. Dan mulai pg dengan itu:

    brew services start postgresql
  8. Pasang kembali permata:

    gem install pg

Dan bobsyouruncle.

IAmNaN
sumber
3
Hati-hati dengan metode ini ... ini adalah pendekatan bumi hangus dan kemungkinan besar akan menghancurkan semua dbs lokal yang Anda miliki saat ini. Lihatlah github.com/copiousfreetime/launchy di mana Anda mungkin dapat melakukannya lunchy stop postgresdiikuti olehlunchy start postgres
lacostenycoder
di ubuntu saya percaya sudo apt purge postgresqlatau postgresqlpachage lain harus cukup dan itu akan menghancurkan segalanya.
Fabrizio Bertoglio
Saya melakukan ini dan sekarang mendapatkan kesalahan berikut: postgresql_adapter.rb: 709: di `rescue in connect ': FATAL: database" project3_development "tidak ada (ActiveRecord :: NoDatabaseError). Apa yang harus saya lakukan ? Saya sebenarnya bisa melihat database di rubymine.
Franky Doul
13

periksa file postgresql.conf (on ubuntuada di /etc/postgresql/XX/main/postgresql.conf ) dan cari baris yang berbunyi:

listen_addresses="localhost"

coba ubah ke:

listen_addresses="*"

akan menerima setiap IP, selanjutnya periksa baris yang mengatakan:

port=5432

dan periksa apakah port yang sama dengan database.yml Anda, secara default pada postgresql-9.2 saya menggunakan 5433, bukan 5432 , jangan lupa untuk me - restart server postgres,

Semoga berhasil!

Alexis
sumber
Ini juga masalah saya. Saya menduga itu terjadi karena saya sudah menjalankan 9,3 ketika saya mencoba untuk "memutakhirkan" (yaitu menginstal 9.5). Saya kira itu mencoba untuk bersikap sopan dan mengkonfigurasikan dirinya untuk berjalan secara paralel pada port yang berbeda daripada mengambil alih instal / proses yang ada.
Joel Fouse
12

Seperti yang dijelaskan oleh @Magne, kesalahan PG::ConnectionBad - could not connect to server: Connection refuseddapat disajikan setelah peningkatan versi utama / minor (mis. 9.5 -> 9.6Atau 9 -> 10) PostgreSQL.

Saya mendapatkan kesalahan ini setelah menjalankan brew upgrade postgresqlsetelah rilis PostgreSQL versi 9.6. Masalahnya adalah bahwa pemutakhiran versi besar / kecil memerlukan langkah-langkah tambahan untuk memigrasikan tanggal lama ke versi baru.

Cara memeriksa apakah ini masalah Anda

Anda dapat memeriksa apakah ini masalahnya dengan memeriksa formula minuman terbaru versi PostgreSQL yang diinstal dengan ...

$ 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

... lalu membandingkannya dengan PG_VERSION saat ini

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

Jika PG_VERSION kurang dari formula minuman terbaru dan perbedaannya adalah perubahan versi besar / kecil, maka ini mungkin masalah Anda.

Cara memperbaiki (yaitu cara meningkatkan data)

Petunjuk di bawah ini untuk peningkatan dari 9,5 ke 9,6. Ubah nomor versi yang sesuai untuk peningkatan Anda sendiri

Langkah 1. Pastikan PostgreSQL dimatikan:

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

Langkah 2. Buat database asli yang baru:

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

Langkah 3. Periksa apakah versi biner lama dan baru:

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

Perhatikan bahwa dalam contoh ini saya meningkatkan dari binari 9.5.4 ke 9.6.1

Langkah 4. Migrasikan data saat ini ke database baru menggunakanutilitas 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 flag menentukan direktori data saat ini
  • -D flag menentukan direktori data baru yang akan dibuat
  • -b menentukan biner lama
  • -B menentukan biner baru yang akan kami tingkatkan

Langkah 5. Pindahkan direktori data lama dari jalan

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

Langkah 6. Pindahkan direktori data yang baru dibuat ke tempat yang diinginkan PostgreSQL

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

Langkah 7. Mulai PostgreSQL lagi

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

Langkah 8. Jika Anda menggunakan permata pg untuk Rails, Anda harus mengkompilasi ulang dengan menghapus dan menginstal ulang permata (lewati langkah ini jika Anda tidak menggunakan permata pg)

$ gem uninstall pg
$ gem install pg

Langkah 9. (opsional) Setelah meyakinkan diri Anda bahwa semuanya berfungsi OK, Anda dapat menjalankan mendapatkan kembali beberapa ruang disk dengan perintah berikut:

brew cleanup postgresql

... dan jika Anda merasa sangat berani, Anda dapat menghapus direktori data PostgreSQL lama dengan perintah berikut

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

(Jawaban ini didasarkan pada posting blog yang luar biasa https://keita.blog/2016/01/09/homebrew-and-postgresql-9-5/ dengan beberapa tambahan)

Neil Atkinson
sumber
7

Seperti yang disarankan di atas, saya baru saja membuka Aplikasi Postgres di Mac saya, mengklik Buka Psql, menutup psqljendela, memulai kembali server rel saya saya di terminal saya, dan itu berfungsi lagi, tidak ada lagi kesalahan.

Percayai gajah: http://postgresapp.com/

houstongolden
sumber
6

Saya mendapat masalah yang sama setelah memperbarui mac saya di Osx Movaje.

saya menemukan solusi ini:

Coba dulu baris perintah di bawah ini di terminal Anda:

brew services restart postgresql

Jika tidak ada yang berubah:

ps aux | grep postgres

Jika masih tidak ada yang berubah:

ls -ls | grep post

Perintah terakhir untuk memperbaikinya, menghapus file kunci postgres dengan mengeksekusi dari root:

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

lalu :

brew services restart postgresql

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

Semoga itu bisa membantu :)

Salam !!

Basile
sumber
5

Jika Anda mengalami masalah ini setelah melakukan brew upgradepostgres yang ditingkatkan ke versi utama baru (f.ex 9.3.0ke 9.4.0atau lebih tinggi), maka lakukan ini:

@ perbaikan dmitrygusev dari https://github.com/Homebrew/homebrew/issues/35240

Mengikuti panduan migrasi resmi [Postgresql] membantu:

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

Itu saja. Periksa apakah impor berjalan dengan baik, lalu hapus cadangan:

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

Masalahnya di sini adalah bahwa pada peningkatan versi utama postgres, perlu untuk membuat ulang / memigrasi basis data Anda. Dan mungkin chowndirektori atau panggilan secara manualinitdb .

Lihat juga: Bagaimana cara meningkatkan PostgreSQL dari versi 9.5 ke versi 9.6 tanpa kehilangan data?


Beberapa tips lain, yang mungkin berguna, jika Anda tidak menggunakan Homebrew:

Cara menghentikan server PG secara manual:

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

Cara memulai server PG secara manual:

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

Magne
sumber
4

Cari file postgres Anda di dalam /usr/local/var/postgres/atau di dalam /usr/var/postgres/dan kemudian hapus postmaster.pidfile yang ada di folder itu.

Shafqat Awais
sumber
3

menempatkan host: localhostdi database.ymlberkas dan menjalankan perintah ini:

rake db:create db:migrate  
Abel
sumber
2

Pengguna Mac dengan aplikasi Postgres mungkin ingin membuka aplikasi (cari sorotan Postgres atau temukan ikon gajah di bilah menu Anda). Di sana Anda dapat melihat X merah dengan pesan: "Basi file postmaster.pid". Sayangnya pencarian sorotan tidak akan menunjukkan lokasi file ini. Klik "Pengaturan Server ...", dan di kotak dialog yang terbuka, klik tombol "Tampilkan" untuk membuka Direktori Data. Arahkan satu folder ke dalam (bagi saya itu "var-10"), dan hapus postmaster.pidfile tersebut.

Kembali ke aplikasi Postgres dan klik tombol Start. X merah itu harus berubah menjadi tanda centang hijau dengan pesan "Running". Sekarang Anda harus dapat menjalankan perintah Rails seperti rails serverdi terminal.

Pengaturan Server Aplikasi Postgres - Tampilkan Direktori Data

chemturion
sumber
Ini menyelesaikannya untuk saya. Terima kasih banyak atas solusinya! Itu adalah sebuah proses!
boyd
2

Saya baru saja mengalami masalah ini malam ini, mengerjakan aplikasi rel yang telah saya kerjakan untuk sementara waktu. Masalah saya hanya sampai pada kenyataan bahwa server postgresql saya tidak berjalan .

Saya pergi ke bagian atas layar (saya menggunakan Mac) dan mengklik ikon gajah kecil dan mengklik 'Mulai'.

Ternyata server kami tidak menyala.

Semoga ini memberikan solusi sederhana bagi seseorang.

solidstatejake
sumber
1

Jelas jawaban @ Chris Slade yang membantu saya.

Saya menulis sebuah skrip kecil untuk mematikan proses yang tersisa jika berguna:

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
}
Augustin Riedinger
sumber
1

Saya memiliki masalah yang sama dalam produksi (pengembangan semuanya bekerja), dalam kasus saya server DB tidak pada mesin yang sama dengan aplikasi, jadi akhirnya yang berhasil adalah hanya bermigrasi dengan menulis:

bundle exec rake db:migrate RAILS_ENV=production

dan kemudian restart server dan semuanya berfungsi.

leah
sumber
1

Saya tahu ini terlambat tetapi mungkin bisa membantu seseorang. Saya mengalami masalah yang sama. Ternyata saya memiliki dua versi postgres 9.1 dan 9.5. Saya menghapus instalan 9.1 dan 9.5 dan menginstal 9.5 lagi dan itu berhasil untuk saya.

Darshan Chauhan
sumber
1

Anda mungkin me-restart komputer Anda dan lupa meluncurkan aplikasi Postgres.

The Whiz of Oz
sumber
1

Saya memiliki masalah yang sama. Saya Periksa baris terakhir PostgreSQLfile log di /var/log/postgresql. Ada parameter konfigurasi yang tidak dikenal dalam file /etc/postgresql/9.5/main/postgresql.conf . Mengomentari baris kesalahan dalam postgresql.confmenyelesaikan masalah saya.

Hajar Homayouni
sumber
1

Masalah saya ada di file application.yml saya . Basis data saya urlpada herokutidak menggunakan port 5342. Periksa herokukonfigurasi Anda var DATABASE_URL. Pastikan yang cocok dengan persis ada di application.yml Anda untuk database yang berlaku.

NickDK
sumber
1

Saya memiliki masalah yang sama, penjelasan ini memecahkannya untuk saya: http://blog.55minutes.com/2013/09/postgresql-93-brew-upgrade/

langkah kuncinya adalah melihat bagian ekor /usr/local/var/postgres/server.log saya , yang membuat saya melihat masalah sebenarnya, yaitu saya belum sepenuhnya menyelesaikan proses peningkatan PostgreSQL

Ben Wheeler
sumber
Situasi serupa di sini - kuncinya bagi saya juga adalah melihat server.log. Menemukan jawaban saya di sini: stackoverflow.com/questions/25970132/…
Nathan Wallace
1

Saya hanya menjalankan perintah ini sudo service postgresql restart dan semuanya bekerja lagi.

kalibbala
sumber
0

Saya menghentikan server rel, berlari rake db:migratedan memulai rails s.

mantra
sumber
0

Saya baru saja mengalami masalah ini dan tidak ada solusi yang disarankan bekerja untuk saya. Setelah banyak googling, saya memang menemukan solusinya. Inilah yang bekerja untuk saya.

Pertama, saya harus menjalankan perintah ini untuk memulai server dan saya kira mengatur lokasi file konfigurasi.

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

Kemudian saya menjalankan perintah ini untuk mengakses postgres

psql postgres

Dan pada prompt postgres maka saya mengetik "\ du" untuk membuat daftar peran

postgres=# \du

Peran postgres tidak ada sehingga saya harus membuatnya dengan perintah ini

CREATE ROLE POSTGRES WITH SUPERUSER CREATEDB CREATEUSER CREATEROLE REPLICATION BYPASSRLS ;

Itu memecahkan masalah saya dan saya harap ini membantu orang lain.

luis.madrigal
sumber
0

Anda tidak perlu menghapus postmaster.pidfile, karena ini mungkin mengundang korupsi data.

Pilihan? Cukup killprosesnya (jangan gunakan kill -9, hanya pembunuhan biasa yang akan dilakukan).

Kemudian restart server postgres dan Anda siap berangkat!

Berikut langkah-langkah untuk mencapai itu:

  1. Temukan dan buka postmaster.pidfile (milik saya ada di Mac Sierra)

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

  2. Salin PID - ini nomor di baris pertama postmaster.pidfile

  3. Matikan proses dengan kill PID, misalnya, jika PID saya 381, saya akan melakukannyakill 381
  4. Nyalakan kembali Postres - jika menggunakan minuman, lakukan brew services start postgresql. Atau jika menggunakan postgresapp, cukup klik starttombol
Ruto Collins
sumber
0

Manajer paket Homebrew menyertakan daftar launchctl untuk memulai secara otomatis. Untuk informasi lebih lanjut, jalankan brew info postgres.

Mulai secara manual:

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

Berhenti secara manual:

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

Mulai secara otomatis:

"Untuk memiliki launchd mulai postgresql sekarang dan restart saat login:"

brew services start postgresql

pengguna3402754
sumber