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
ruby-on-rails
ruby
ruby-on-rails-4
database-connection
pg
fadelakin
sumber
sumber
Jawaban:
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) .
/usr/local/var/postgres/
, atau/usr/local/var/log/
sistem lain mungkin/usr/var/postgres/
.server.log
). Pada baris terakhir Anda akan melihat:rm postmaster.pid
Mulai ulang server Anda. Pada mac yang menggunakan launchctl (dengan homebrew) perintah berikut ini akan me-restart server.
ATAU pada versi Brew yang lebih baru
sumber
FATAL: could not open directory "pg_tblspc": No such file or directory
. Jawaban ini membantu saya dengan masalah itu stackoverflow.com/questions/25970132/…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 rebootbrew install postgres
,ln -sfv /usr/local/opt/postgresql/*.plist ~/Library/LaunchAgents
,launchctl load ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist
, danARCHFLAGS="-arch x86_64" gem install pg
. Saya tidak tahu berapa banyak solusi lain yang saya coba sebelum menjalankannya.brew services restart postgresql
/usr/local/var/log/postgres.log
Setelah banyak pencarian dan analisis, saya menemukan solusi jika Anda menggunakan ubuntu cukup tulis perintah ini di terminal Anda dan tekan enter
Ini akan memulai kembali PostgreSQL Anda, saya harap ini akan membantu Anda.
sumber
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
.pid
file dengan menjalankan perintah ini.Langkah 3: Mulai ulang server Anda
Pengguna Mac
Pengguna Linux
Akhirnya restart aplikasi Anda dan Anda siap melakukannya.
sumber
Saya telah berhasil menyelesaikan masalah dengan mengikuti jawaban Chris Slade, tetapi untuk me-restart server, saya harus menggunakan perintah berikut:
yang saya temukan di sini (jawaban pjammer di bagian bawah)
sumber
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:
Setelah itu Anda perlu membuat pengguna dan database di postgresql seperti ini:
Kemudian Anda dapat melihat yang berikut di dalam terminal Anda
Ketik di sana:
Setelah Anda melakukan ini, maka Anda perlu memperbaiki
database.yml
. Mungkin Anda membutuhkan sesuatu seperti itu:Juga jika Anda memiliki masalah dengan postgresql, ada baiknya memeriksa pg_hba.conf
sumber
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 :)
sumber
Copot pg:
Copot postgres:
Nuke folder postgres yang mungkin masih melekat dengan banyak barang basi di:
Mulai ulang (mungkin tidak perlu)
Instal ulang pg:
Komentar saya dalam jawaban Chris Slade dimulai dengan cara yang sulit, sekarang saya menggunakan layanan minuman yang telah menyederhanakan hidup saya dalam banyak hal:
Dan mulai pg dengan itu:
Pasang kembali permata:
Dan bobsyouruncle.
sumber
lunchy stop postgres
diikuti olehlunchy start postgres
sudo apt purge postgresql
ataupostgresql
pachage lain harus cukup dan itu akan menghancurkan segalanya.periksa file postgresql.conf (on
ubuntu
ada di /etc/postgresql/XX/main/postgresql.conf ) dan cari baris yang berbunyi:coba ubah ke:
akan menerima setiap IP, selanjutnya periksa baris yang mengatakan:
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!
sumber
Seperti yang dijelaskan oleh @Magne, kesalahan
PG::ConnectionBad - could not connect to server: Connection refused
dapat disajikan setelah peningkatan versi utama / minor (mis.9.5 -> 9.6
Atau9 -> 10
) PostgreSQL.Saya mendapatkan kesalahan ini setelah menjalankan
brew upgrade postgresql
setelah 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 ...
... lalu membandingkannya dengan PG_VERSION saat ini
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:
Langkah 2. Buat database asli yang baru:
Langkah 3. Periksa apakah versi biner lama dan baru:
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 .
-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 tingkatkanLangkah 5. Pindahkan direktori data lama dari jalan
Langkah 6. Pindahkan direktori data yang baru dibuat ke tempat yang diinginkan PostgreSQL
Langkah 7. Mulai PostgreSQL lagi
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)
Langkah 9. (opsional) Setelah meyakinkan diri Anda bahwa semuanya berfungsi OK, Anda dapat menjalankan mendapatkan kembali beberapa ruang disk dengan perintah berikut:
... dan jika Anda merasa sangat berani, Anda dapat menghapus direktori data PostgreSQL lama dengan perintah berikut
(Jawaban ini didasarkan pada posting blog yang luar biasa https://keita.blog/2016/01/09/homebrew-and-postgresql-9-5/ dengan beberapa tambahan)
sumber
Inilah yang benar-benar membantu saya.
Referensi: http://alumni.lewagon.org/questions/60
sumber
Seperti yang disarankan di atas, saya baru saja membuka Aplikasi Postgres di Mac saya, mengklik Buka
Psql
, menutuppsql
jendela, memulai kembali server rel saya saya di terminal saya, dan itu berfungsi lagi, tidak ada lagi kesalahan.Percayai gajah: http://postgresapp.com/
sumber
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:
Jika tidak ada yang berubah:
Jika masih tidak ada yang berubah:
Perintah terakhir untuk memperbaikinya, menghapus file kunci postgres dengan mengeksekusi dari root:
lalu :
Dari berziiii: https://github.com/ga-wdi-boston/capstone-project/issues/325
Semoga itu bisa membantu :)
Salam !!
sumber
Jika Anda mengalami masalah ini setelah melakukan
brew upgrade
postgres yang ditingkatkan ke versi utama baru (f.ex9.3.0
ke9.4.0
atau lebih tinggi), maka lakukan ini:Masalahnya di sini adalah bahwa pada peningkatan versi utama postgres, perlu untuk membuat ulang / memigrasi basis data Anda. Dan mungkin
chown
direktori 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
sumber
Cari file postgres Anda di dalam
/usr/local/var/postgres/
atau di dalam/usr/var/postgres/
dan kemudian hapuspostmaster.pid
file yang ada di folder itu.sumber
menempatkan
host: localhost
didatabase.yml
berkas dan menjalankan perintah ini:sumber
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.pid
file 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 server
di terminal.sumber
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.
sumber
Jelas jawaban @ Chris Slade yang membantu saya.
Saya menulis sebuah skrip kecil untuk mematikan proses yang tersisa jika berguna:
sumber
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:
dan kemudian restart server dan semuanya berfungsi.
sumber
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.
sumber
Anda mungkin me-restart komputer Anda dan lupa meluncurkan aplikasi Postgres.
sumber
Saya memiliki masalah yang sama. Saya Periksa baris terakhir
PostgreSQL
file log di/var/log/postgresql
. Ada parameter konfigurasi yang tidak dikenal dalam file /etc/postgresql/9.5/main/postgresql.conf . Mengomentari baris kesalahan dalampostgresql.conf
menyelesaikan masalah saya.sumber
Masalah saya ada di file application.yml saya . Basis data saya
url
padaheroku
tidak menggunakan port 5342. Periksaheroku
konfigurasi Andavar DATABASE_URL
. Pastikan yang cocok dengan persis ada di application.yml Anda untuk database yang berlaku.sumber
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
sumber
server.log
. Menemukan jawaban saya di sini: stackoverflow.com/questions/25970132/…Saya hanya menjalankan perintah ini
sudo service postgresql restart
dan semuanya bekerja lagi.sumber
Saya menghentikan server rel, berlari
rake db:migrate
dan memulairails s
.sumber
Saya mengalami kesalahan ini setelah mengikuti
brew upgrade
postgresql mana yang diperbarui. Saya menemukan cara memperbaiki masalah saya dari pos yang hebat ini. Saya bisa mendapatkan postgres kembali dan berjalan dan bahkan bermigrasi ke semua database saya yang ada. https://coderwall.com/p/ti4amw/how-to-launch-postgresql-after-upgradesumber
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.
Kemudian saya menjalankan perintah ini untuk mengakses postgres
Dan pada prompt postgres maka saya mengetik "\ du" untuk membuat daftar peran
Peran postgres tidak ada sehingga saya harus membuatnya dengan perintah ini
Itu memecahkan masalah saya dan saya harap ini membantu orang lain.
sumber
Anda tidak perlu menghapus
postmaster.pid
file, karena ini mungkin mengundang korupsi data.Pilihan? Cukup
kill
prosesnya (jangan gunakankill -9
, hanya pembunuhan biasa yang akan dilakukan).Kemudian restart server postgres dan Anda siap berangkat!
Berikut langkah-langkah untuk mencapai itu:
Temukan dan buka
postmaster.pid
file (milik saya ada di Mac Sierra)vi ~/Library/Application\ Support/Postgres/var-10/postmaster.pid
Salin PID - ini nomor di baris pertama
postmaster.pid
filekill PID
, misalnya, jika PID saya 381, saya akan melakukannyakill 381
brew services start postgresql
. Atau jika menggunakan postgresapp, cukup klikstart
tombolsumber
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
sumber