PG :: ConnectionBad - sunucuya bağlanılamadı: Bağlantı reddedildi


271

Rails 4.0 sunucumu her çalıştırdığımda bu çıktıyı alıyorum.

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 kullanıyorum, bu yüzden sorunun bu olup olmadığını bilmiyorum. Yapabildiğim her şeyi denedim ama hiçbir şey işe yaramadı. Şimdi hem postgres hem de pg gem'i birkaç kez kaldırdım ve yükledim.

Bu benim database.yml dosyam

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 dosyasına 'host: localhost' eklemeyi deneyin, bunu stackoverflow.com/a/10793186/919641
Surendra Bobba

1
@trajan Bunu zaten yaptım. Hatta bir çözüm için araştırmaya başladığımda bile bu ipliği kullandım. Database.yml dosyamı gönderdim. Buna bir göz atabilirsiniz. Belki yardımcı olabilir.
fadelakin

pg_hba.conf'nuzu göster
Pronix

2
Eğer kullanıyorsanız postgres uygulamasını açmayı unutmayın.
Pavan Katepalli

1
Bana app @PavanKatepalli açmak hatırlatmak için teşekkürler! İyi çağrı;)
catch22

Yanıtlar:


638

Eski bir PID dosyası kadar basit olabilir . Bilgisayarınız kapatma işlemini tamamen tamamlamadığı için sessizce başarısız olabilir, bu da postgres'in PID (işlem kimliği) dosyasını silmediği anlamına gelir .

PID dosyası postgres tarafından aynı anda yalnızca bir sunucu örneğinin çalıştığından emin olmak için kullanılır. Yeniden başlatıldığında başarısız olur, çünkü postgres'e sunucunun başka bir örneğinin başlatıldığını söyleyen bir PID dosyası vardır (çalışmasa bile, PID'yi kapatıp silmemiştir) .

  1. Düzeltmek için PID dosyasını kaldırın / yeniden adlandırın. Postgres veri dizinini bulun. Homebrew kullanan macOS'ta /usr/local/var/postgres/veya /usr/local/var/log/diğer sistemlerde olabilir /usr/var/postgres/.
  2. Sorunun bu olduğundan emin olmak için günlük dosyasına ( server.log) bakın. Son satırlarda göreceksiniz:

FATAL: kilit dosyası "postmaster.pid" zaten var
İPUCU: "/ usr / local / var / postgres" veri dizininde başka bir posta yöneticisi (PID 347) çalışıyor mu?

  1. Öyleyse, rm postmaster.pid
  2. Sunucunuzu yeniden başlatın. Launchctl (homebrew ile) kullanan bir mac'ta aşağıdaki komutlar sunucuyu yeniden başlatır.

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

    VEYA Brew'in daha yeni sürümlerinde

    brew services restart postgresql

24
# 2 harika bir öneridir: "Check server.log". Benim hata aslında Yosemite yükseltme neden oldu, sunucusu günlüğü söyledi: FATAL: could not open directory "pg_tblspc": No such file or directory. Bu cevap bana bu problemde yardımcı oldu stackoverflow.com/questions/25970132/…
Paul Kaplan

20
Bunu daha önce iptal ettim, çünkü bana yakılan dünya stilini düzeltmek için yeterince şey verdi. Ben kaldırıldığı pg ( gem uninstall pg), yüklemesi kaldırılmış postgres ( brew uninstall postgres), sonra içinde bayat şeyler o bir grup ile kalıcı hangi klasör postgres nuked ( rm -rf /usr/local/var/postgres). Yeniden başlatıldıktan sonra brew install postgres, ln -sfv /usr/local/opt/postgresql/*.plist ~/Library/LaunchAgents, launchctl load ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist, ve ARCHFLAGS="-arch x86_64" gem install pg. Bunu işe almadan önce kaç tane başka çözüm denediğimi bilmiyorum.
IAmNaN

2
.opts dosyası postmaster.pid dosyası ile aynıdır?
ARTLoe

31
Daha yeni Brew kullanıcıları için # 4 komutubrew services restart postgresql
streetlogics

7
Benim için (MAC, homebrew) günlük dosyası/usr/local/var/log/postgres.log
DZack

44

Bir çok arama ve analizden sonra ubuntu kullanıyorsanız bir çözüm buldum, sadece bu komutu terminalinize yazın ve enter tuşuna basın

sudo service postgresql restart

Bu PostgreSQL'inizi yeniden başlatacak, umarım bu sizin için yararlı olacaktır.


3
1000 kez teşekkür ederim. Ubuntu sürümümü yeni geliştirdim ve bu benim için düzeltildi.
Mauricio Moraes

Sorunun OSX Mavericks'e atıfta bulunduğu düşünülürse, bu slution, geçiş veya sunucu başlangıcında ilginç bir şey olduğunda Ubuntu kurulumları için kullanışlıdır.
Jerome

39

Bu sorun postgres düzgün kapanmadığında ortaya çıkar. İşte bu sorunu üç basit adımda nasıl çözdüm.

1. Adım: Postgres dizininize gidin

Mac Kullanıcıları bunu bulur /usr/local/var/postgres, diğerleri bakabilir /usr/var/postgres/.

Adım 2:.pid Bu komutu çalıştırarak dosyayı kaldırın .

rm postmaster.pid

3. Adım: Sunucunuzu yeniden başlatın

Mac Kullanıcıları

brew services restart postgresql

Linux Kullanıcıları

sudo service postgresql restart

Sonunda uygulamanızı yeniden başlatın ve başlamaya hazırsınız.


33

Sorunu Chris Slade'in cevabını takip ederek çözmeyi başardım, ancak sunucuyu yeniden başlatmak için aşağıdaki komutları kullanmak zorunda kaldım:

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

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

burada buldum (altta pjammer'ın cevabı)


25

Sisteminizde postgresql kurulu mu? Değilse, Install postgresql'i izleyin . Postgresql'i sisteminize başarıyla entegre ettikten sonra , sistem terminalinize böyle bir şey yazabilirsiniz:

which psql
#=> /usr/bin/psql

Bundan sonra postgresql'de şöyle bir kullanıcı ve veritabanı oluşturmanız gerekir:

sudo su - postgres
psql

Ardından terminalinizde aşağıdakileri görebilirsiniz

postgres=#

Buraya yazın:

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

Bunu yaptıktan sonra, düzeltmeniz gerekir database.yml. Muhtemelen böyle bir şeye ihtiyacınız var:

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

Ayrıca postgresql ile ilgili sorunlarınız varsa pg_hba.conf dosyasını kontrol etmek iyi bir fikirdir


1
Ben yüklü var ama konumu / usr / local / bin / psql ve sudo -u postgres çalıştırdığımda sudo diyor: bilinmeyen kullanıcı: postgres
fadelakin

psql, uygulamanızda pg kullanmak istiyorsanız çalışmalıdır. Terminal psql metalleri-directory_development yazmayı deneyin. Herhangi bir sonuç var mı? Değilse, postgres'i yeniden yüklemeyi deneyin, örneğin bunu deneyin
Mihail Davydenkov

Ben psql metal-dizin_development çalıştırdığımda psql: sunucuya bağlanamadı: Böyle bir dosya veya dizin yok Sunucu yerel olarak çalışıyor ve Unix etki alanı soketi "/tmp/.s.PGSQL.5432" üzerinde bağlantıları kabul ediyor mu? Ben yeni başlayan bir ray programcısıyım ve bunun ne anlama geldiğini bilmiyorum. Ben postgres defalarca ama hiç şans yeniden denedim.
fadelakin

23

İle ilgili sorunlar bu tip gidermek için Postgres ve çalışmak için Postgres üzerinde Mac OSX, bu muhtemelen en iyi ve en kolay şimdiye kadar mucitler solüsyon:

http://postgresapp.com/

Sadece indirin, kurun ve mutlu olun :)


19
  1. Pg'yi kaldırın:

    gem uninstall pg
  2. Postgres'i kaldır:

    brew uninstall postgres
  3. Bir sürü eski şeyle devam ediyor olabilir postgres klasörünü nuke:

    rm -rf /usr/local/var/postgres
  4. Yeniden başlat (belki gereksiz)

  5. Pg'yi yeniden yükleyin:

    brew install postgres
  6. Chris Slade'in cevabındaki yorumum zor bir şekilde başlıyor, şimdi hayatımı birçok yönden basitleştiren demleme hizmetlerini kullanıyorum:

    brew install services
  7. Ve onunla pg'yi başlatın:

    brew services start postgresql
  8. Gem'i yeniden yükleyin:

    gem install pg

Ve bobsyouruncle.


3
Bu yönteme dikkat edin ... Bu yakılmış bir dünya yaklaşımıdır ve şu anda sahip olduğunuz yerel dbs'leri büyük olasılıkla yok edecektir. Bunu takip edebileceğiniz github.com/copiousfreetime/launchy adresine bir göz atınlunchy stop postgreslunchy start postgres
lacostenycoder

ubuntu üzerinde inanıyorum sudo apt purge postgresqlya da başka bir postgresqlpalet yeterli olmalı ve her şeyi yok edecek.
Fabrizio Bertoglio

Bunu yaptım ve şu hatayı aldım: postgresql_adapter.rb: 709: `` rescue in connect '' içinde: FATAL: database "project3_development" mevcut değil (ActiveRecord :: NoDatabaseError). Ne yapmalıyım ? Aslında veritabanını rubimin içinde görebiliyorum.
Franky Doul

13

dosya kontrol postgresql.conf (açık ubuntuolduğunu /etc/postgresql/XX/main/postgresql.conf diyor hattı için) ve göz:

listen_addresses="localhost"

şu şekilde değiştirmeyi deneyin:

listen_addresses="*"

her IP'yi kabul eder, bir sonraki satırda şunları kontrol edin:

port=5432

ve database.yml dosyanızın aynı bağlantı noktası olup olmadığını kontrol edin, varsayılan olarak postgresql- 9.2'mde 5433 yerine 5432 kullanın , postgres sunucusunu yeniden başlatmayı unutmayın ,

İyi şanslar!


Benim sorunum da buydu. Ben "yükseltme" (yani yüklemek 9.5) çalışırken zaten 9.3 çalışan vardı çünkü bunun olduğundan şüpheleniyorum. Ben kibar olmaya çalışıyorum ve kendini mevcut yükleme / işlem devralmak yerine farklı bir bağlantı noktasında paralel çalışacak şekilde yapılandırıyordu.
Joel Fouse

12

@Magne tarafından açıklandığı gibi, hata , PostgreSQL'in büyük / küçük bir sürüm yükseltmesinden (örn. Veya ) PG::ConnectionBad - could not connect to server: Connection refusedsonra sunulabilir .9.5 -> 9.69 -> 10

brew upgrade postgresqlPostgreSQL sürüm 9.6 yayınlandıktan sonra çalıştırdıktan sonra bu hatayı aldım . Sorun, büyük / küçük sürüm yükseltmelerinin eski tarihi yeni sürüme geçirmek için ek adımlar gerektirmesidir.

Sorunun bu olup olmadığını nasıl kontrol edebilirim?

Homebrew ile kurulan en son demleme formülü PostgreSQL sürümünü kontrol ederek sorunun bu olup olmadığını kontrol edebilirsiniz ...

$ 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

... ve mevcut PG_VERSION ile karşılaştırılıyor

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

PG_VERSION en son demleme formülünden daha azsa ve fark büyük / küçük bir sürüm değişikliğiyse, bu muhtemelen sizin probleminizdir.

Nasıl düzeltilir (yani verilerin yükseltilmesi)

Aşağıdaki talimatlar 9.5'ten 9.6'ya yükseltme içindir. Sürüm numaralarını kendi yükseltmenize uygun şekilde değiştirin

Adım 1. PostgreSQL'in kapalı olduğundan emin olun:

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

Adım 2. Yeni, bozulmamış bir veritabanı oluşturun:

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

Adım 3. Eski ve yeni ikili sürümlerin neler olduğunu kontrol edin:

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

Bu örnekte 9.5.4 ikili dosyadan 9.6.1 ikili dosyaya yükseltme yaptığımı unutmayın

Adım 4. pg_upgrade yardımcı programınıkullanarak mevcut verileri yeni veritabanına geçirin .

$ 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 geçerli veri dizinini belirtir
  • -D flag oluşturulacak yeni veri dizinini belirtir
  • -b eski ikiliyi belirtir
  • -B yeni sürüme geçirdiğimiz yeni ikili dosyayı belirtir

Adım 5. Eski veri dizinini yoldan çıkarın

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

Adım 6. Yeni oluşturulan veri dizinini PostgreSQL'in beklediği yere taşıyın

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

Adım 7. PostgreSQL'i tekrar başlatın

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

Adım 8. Rails için pg gem'i kullanıyorsanız, gem'i kaldırıp yeniden yükleyerek derlemelisiniz (pg gem'i kullanmıyorsanız bu adımı atlayın)

$ gem uninstall pg
$ gem install pg

Adım 9. (isteğe bağlı) Her şeyin yolunda gittiğine dair kendinize güvence verdikten sonra, aşağıdaki komutla disk alanı kazanmayı yeniden çalıştırabilirsiniz:

brew cleanup postgresql

... ve gerçekten cesur hissediyorsanız, eski PostgreSQL veri dizinini aşağıdaki komutla silebilirsiniz

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

(Bu cevap https://keita.blog/2016/01/09/homebrew-and-postgresql-9-5/ bazı eklemelerle mükemmel bir blog yayınına dayanmaktadır )



7

Yukarıda önerildiği gibi, Mac'imde Postgres Uygulamasını açtım , Aç'ı tıkladım Psql, psqlpencereyi kapattım, raylar sunucumu yeniden başlattım terminalimde ve tekrar çalışıyordu, artık hata yok.

Fil güven: http://postgresapp.com/


6

Osx Movaje'deki mac'umu güncelledikten sonra aynı sorunu aldım.

bu çözümü buldum:

Önce terminalinizdeki feryat komut satırını deneyin:

brew services restart postgresql

Hiçbir şey değişmezse:

ps aux | grep postgres

Hala hiçbir şey değişmezse:

ls -ls | grep post

Düzeltmek için son komut, kökten çalıştırarak postgres kilit dosyasını kaldırdı:

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

ve sonra :

brew services restart postgresql

Berziiii sitesinden: https://github.com/ga-wdi-boston/capstone-project/issues/325

Umarım yardımcı olur :)

Saygılarımızla !!


5

brew upgradeYeni bir büyük sürüme yükseltilmiş postgres yaptıktan sonra (örneğin, x 9.3.0. 9.4.0veya daha yüksek) bu sorunu yaşarsanız , bunu yapın:

@ dmitrygusev'in https://github.com/Homebrew/homebrew/issues/35240 adresindeki düzeltmesi

Aşağıdaki resmi [Postgresql] taşıma kılavuzu yardımcı oldu:

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

Bu kadar. İçe aktarmanın iyi olup olmadığını kontrol edin, ardından yedekleri silin:

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

Burada sorun postgres büyük bir yükseltme, veritabanınızı yeniden oluşturmak / taşımak için gerekli olmasıdır. Ve muhtemelen chowndizinleri veya manuel olarak arayın initdb.

Ayrıca bkz: PostgreSQL'i veri kaybetmeden sürüm 9.5'ten sürüm 9.6'ya nasıl yükseltilir?


Homebrew kullanmamanız durumunda kullanışlı olabilecek diğer bazı ipuçları:

PG sunucusu manuel olarak nasıl durdurulur:

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

PG sunucusunu manuel olarak başlatma:

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


4

İçinde /usr/local/var/postgres/veya içinde olabileceği postgres dosyanızı bulun /usr/var/postgres/ve ardından postmaster.pidbu klasörde bulunan dosyayı silin .


3

koymak host: localhostiçinde database.ymldosya ve bu komutu çalıştırın:

rake db:create db:migrate  

2

Postgres uygulaması olan Mac kullanıcıları uygulamayı açmak isteyebilir (Postgres'te spotlight araması yapın veya menü çubuğunuzdaki fil simgesini bulun). Orada "Stale postmaster.pid dosyası" mesajıyla kırmızı bir X görebilirsiniz. Maalesef bir spot ışığı araması bu dosyanın konumunu göstermeyecek. "Sunucu Ayarları ..." seçeneğini tıklayın ve açılan iletişim kutusunda Veri Dizini'ni açmak için "Göster" düğmesini tıklayın. İçinde bir klasörde gezinin (benim için "var-10" idi) vepostmaster.pid dosyayı .

Postgres uygulamasına geri dönün ve Başlat düğmesine tıklayın. Bu kırmızı X, "Çalışıyor" mesajıyla yeşil bir onay işaretine dönüşmelidir. Artık Rails komutlarını rails serverterminalde olduğu gibi başarıyla çalıştırabilmelisiniz .

Postgres App Server Ayarları - Veri Dizini Göster


Bu benim için çözdü. Çözüm için çok teşekkürler! Bu bir süreçti!
boyd

2

Sadece bu gece bu sorunu yaşadım, bir süredir üzerinde çalıştığım bir ray uygulaması üzerinde çalışıyorum. Benim sorunum sadece postgresql sunucumun çalışmadığı gerçeğine indi .

Ekranın üst kısmına gittim (Mac'liyim) ve küçük fil simgesini tıklayıp 'Başlat'ı tıkladım.

Sunucumuz açık değil.

Umarım bu birisi için basit bir çözüm sağlar.


1

Kesinlikle @Chris Slade'in cevabı bana yardımcı oldu.

Yararlı ise kalan işlemleri öldürmek için küçük bir senaryo yazdım:

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

Üretimde aynı sorun vardı (geliştirme her şey çalıştı), benim durumumda DB sunucusu uygulamasıyla aynı makinede değil , bu yüzden nihayet işe yarayan sadece yazarak göç etmektir:

bundle exec rake db:migrate RAILS_ENV=production

ve sonra sunucuyu yeniden başlatın ve her şey çalıştı.


1

Bunun geç olduğunu biliyorum ama birine yardım edebilir. Aynı sorunu yaşıyordum. 9.1 ve 9.5 postgreslerinin iki versiyonunu yapacağım ortaya çıktı. 9.1 ve 9.5'i kaldırdım ve 9.5'i tekrar yükledim ve benim için çalıştı.


1

Muhtemelen bilgisayarınızı yeniden başlattınız ve Postgres uygulamasını başlatmayı unuttunuz.


1

Ben de aynı problemi yaşadım. I PostgreSQLGünlük dosyalarının son satırını kontrol edin /var/log/postgresql. /Etc/postgresql/9.5/main/postgresql.conf dosyasında tanınmayan bir yapılandırma parametresi vardı . Hata satırındaki yorum postgresql.confsorunumu çözdü.


1

Benim sorunum application.yml dosyamda oldu. Benim veritabanı urlüzerinde herokusizin kontrol noktasını 5342. kullanarak değildi herokuyapılandırma var DATABASE_URL. Geçerli veritabanı için application.yml ile tam olarak eşleştiğinden emin olun .


1

Aynı sorunu yaşadım, bu açıklama benim için çözdü: http://blog.55minutes.com/2013/09/postgresql-93-brew-upgrade/

Anahtar adım /usr/local/var/postgres/server.log'umun kuyruğuna bakıyordu , bu da gerçek sorunun ne olduğunu görmeme izin verdi, ki PostgreSQL'i yükseltme işlemini tam olarak tamamlamamıştım


Burada benzer durum - benim için anahtar da bakmaktı server.log. Cevabımı burada buldum: stackoverflow.com/questions/25970132/…
Nathan Wallace

1

Sadece bu komutu çalıştırdım sudo service postgresql restart ve her şey tekrar çalıştı.


0

Ray sunucusunu durdurdum, koştum rake db:migrateve başladım rails s.



0

Bu sorunu yaşadım ve önerilen çözümlerin hiçbiri işe yaramadı. Çok fazla googling yaptıktan sonra bir çözüm buldum. Bu benim için işe yaradı.

İlk olarak, sunucuyu başlatmak için bu komutu çalıştırmak zorunda kaldı ve ben yapılandırma dosyasının konumunu ayarlamak tahmin ediyorum.

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

Sonra postgres erişmek için bu komutu çalıştırdı

psql postgres

Ve postgres isteminde rolleri listelemek için "\ du" yazdım

postgres=# \du

Postgres rolü eksikti, bu yüzden bu komutla oluşturmak zorunda kaldım

CREATE ROLE POSTGRES WITH SUPERUSER CREATEDB CREATEUSER CREATEROLE REPLICATION BYPASSRLS ;

Bu sorunumu çözdü ve umarım bu başka birine yardımcı olur.


0

Silmek zorunda değilsiniz postmaster.pidVeri bozulmasına davet ediyor olabileceğinden dosyayı .

Seçeneği? Basitçe killişlem (kullanmayınkill -9 , sadece sıradan bir öldürme yapacak).

Sonra postgres sunucusunu yeniden başlatmanız yeterlidir!

İşte bunu başarmak için adımlar:

  1. Dosyayı bulun ve açın postmaster.pid(benimki Mac Sierra'da)

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

  2. PID'yi kopyalayın - postmaster.piddosyanın ilk satırındaki sayı

  3. Süreci kill PID, örneğin PID'im 381 ise öldürürümkill 381
  4. Postres'i yeniden başlatın - demleme kullanıyorsanız, yapın brew services start postgresql. Veya postgresapp kullanıyorsanız, sadece startdüğmesine tıklayın

0

Homebrew paket yöneticisi, otomatik olarak başlatmak için launchctl plists içerir. Daha fazla bilgi içinbrew info postgres .

Manuel olarak başlat:

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

Manuel olarak durdur:

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

Otomatik olarak başlat:

"Launchd'un şimdi postgresql'yi başlatmasını ve girişte yeniden başlamasını sağlamak için:"

brew services start postgresql

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.