PG :: ConnectionBad - không thể kết nối với máy chủ: Kết nối bị từ chối


270

Mỗi lần tôi chạy máy chủ rails 4.0, tôi nhận được kết quả đầu ra này.

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

Tôi đang chạy Mavericks OS X 10.9 vì vậy tôi không biết đó có phải là vấn đề không. Tôi đã thử mọi cách có thể nhưng dường như không có gì để làm việc. Tôi đã gỡ cài đặt và cài đặt cả postgres và pg gem nhiều lần.

Đây là tập tin cơ sở dữ liệu của tôi

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
thử thêm 'host: localhost' trong database.yml của bạn, nhận này từ stackoverflow.com/a/10793186/919641
Surendra Bobba

1
@trajan Mình đã làm điều đó rồi. Tôi thậm chí đã sử dụng chủ đề đó khi lần đầu tiên tôi bắt đầu nghiên cứu cho một giải pháp. Tôi đã đăng tập tin cơ sở dữ liệu của tôi. Bạn có thể xem nó. Có lẽ nó có thể giúp.
fadelakin

hiển thị pg_hba.conf của bạn
Pronix

2
Đừng quên bật ứng dụng postgres nếu bạn đang sử dụng ứng dụng đó.
Pavan Katepalli

1
Cảm ơn đã nhắc nhở tôi bật ứng dụng @PavanKatepalli! Cuộc gọi tốt;)
bắt

Câu trả lời:


637

Nó có thể đơn giản như cũ tập tin PID . Nó có thể thất bại trong âm thầm vì máy tính của bạn đã không hoàn thành quá trình tắt máy hoàn toàn, điều đó có nghĩa là các postgres đã không xóa tệp PID (id quá trình).

Tệp PID được sử dụng bởi postgres để đảm bảo chỉ có một phiên bản của máy chủ đang chạy tại một thời điểm. Vì vậy, khi nó bắt đầu lại, nó thất bại vì đã có một tệp PID thông báo cho các postgres rằng một phiên bản khác của máy chủ đã được khởi động (ngay cả khi nó không chạy, nó chỉ không tắt máy và xóa PID) .

  1. Để khắc phục, hãy xóa / đổi tên tệp PID. Tìm thư mục dữ liệu postgres. Trên hệ điều hành MacOS sử dụng homebrew nó là trong /usr/local/var/postgres/, hoặc /usr/local/var/log/các hệ thống khác, nó có thể /usr/var/postgres/.
  2. Để chắc chắn rằng đây là vấn đề, hãy xem tệp nhật ký (server.log ). Trên dòng cuối cùng bạn sẽ thấy:

FATAL: khóa tệp "postmaster.pid" đã tồn tại
GỢI Ý: Có phải một bưu điện khác (PID 347) đang chạy trong thư mục dữ liệu "/ usr / local / var / postgres"?

  1. Nếu vậy, rm postmaster.pid
  2. Khởi động lại máy chủ của bạn. Trên máy mac sử dụng launchctl (có homebrew), các lệnh sau sẽ khởi động lại máy chủ.

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

    HOẶC trên các phiên bản mới hơn của Bia

    brew services restart postgresql

24
# 2 là một gợi ý tuyệt vời: "Kiểm tra server.log". Lỗi của tôi thực sự là do nâng cấp lên Yosemite, nhật ký máy chủ cho biết : FATAL: could not open directory "pg_tblspc": No such file or directory. Câu trả lời này đã giúp tôi với vấn đề đó stackoverflow.com/questions/25970132/ Khăn
Paul Kaplan

20
Tôi chỉ nêu lên điều này bởi vì nó đã cho tôi đủ để khắc phục vấn đề cháy xém kiểu đất. Tôi đã gỡ cài đặt pg ( gem uninstall pg), gỡ cài đặt postgres ( brew uninstall postgres), sau đó lấy thư mục postgres đang tồn tại với một loạt các công cụ cũ trong ( rm -rf /usr/local/var/postgres). Sau khi khởi động lại brew install postgres, ln -sfv /usr/local/opt/postgresql/*.plist ~/Library/LaunchAgents, launchctl load ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist, và ARCHFLAGS="-arch x86_64" gem install pg. Tôi không biết có bao nhiêu giải pháp khác tôi đã thử trước khi làm cho nó hoạt động.
IAmNaN

2
tệp postmaster.opts có giống với tệp postmaster.pid không?
ARTLoe

31
Đối với người dùng mới hơn, lệnh số 4 làbrew services restart postgresql
streetlogics

7
Đối với tôi (MAC, homebrew) tệp nhật ký là/usr/local/var/log/postgres.log
DZack

44

Sau rất nhiều lần tìm kiếm và phân tích, tôi đã tìm ra giải pháp nếu bạn đang sử dụng ubfox, chỉ cần viết lệnh này trong thiết bị đầu cuối của bạn và nhấn enter

sudo service postgresql restart

Điều này sẽ khởi động lại PostgreSQL của bạn, tôi hy vọng điều này sẽ hữu ích cho bạn.


3
Cảm ơn bạn 1000 lần. Tôi vừa nâng cấp phiên bản Ubuntu của tôi và bản này đã được sửa cho tôi.
Mauricio Moraes

Mặc dù câu hỏi không đề cập đến OSX Mavericks, sự trì hoãn này rất hữu ích cho việc cài đặt Ubuntu khi có điều gì đó kỳ quặc xảy ra khi di chuyển hoặc khởi động máy chủ.
Jerome

39

Vấn đề này xảy ra khi postgres không tắt đúng cách. Đây là cách tôi giải quyết vấn đề này trong ba bước đơn giản.

Bước 1: Chuyển đến thư mục postgres của bạn

Người dùng Mac sẽ tìm thấy điều này /usr/local/var/postgres, những người khác có thể nhìn vào /usr/var/postgres/.

Bước 2: Xóa .pidtệp bằng cách chạy lệnh này.

rm postmaster.pid

Bước 3: Khởi động lại máy chủ của bạn

Người dùng Mac

brew services restart postgresql

Người dùng Linux

sudo service postgresql restart

Cuối cùng khởi động lại ứng dụng của bạn và bạn tốt để đi.


33

Tôi đã cố gắng giải quyết vấn đề bằng cách làm theo câu trả lời của Chris Slade, nhưng để khởi động lại máy chủ, tôi phải sử dụng các lệnh sau:

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

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

mà tôi tìm thấy ở đây (câu trả lời của pjammer ở ​​phía dưới)


25

Bạn đã cài đặt postgresql trong hệ thống của mình chưa? Nếu không, sau đó xem Cài đặt postgresql . Sau khi bạn tích hợp thành công postgresql vào hệ thống của mình, bạn có thể nhập nội dung tương tự vào thiết bị đầu cuối hệ thống của mình:

which psql
#=> /usr/bin/psql

Sau đó, bạn cần tạo một người dùng và cơ sở dữ liệu trong postgresql như thế này:

sudo su - postgres
psql

Sau đó, bạn có thể thấy những điều sau đây trong thiết bị đầu cuối của bạn

postgres=#

Nhập vào đó:

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

Sau khi bạn làm điều này, sau đó bạn cần phải sửa database.yml. Có lẽ bạn cần một cái gì đó như thế:

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

Ngoài ra nếu bạn gặp vấn đề với postgresql, bạn nên kiểm tra pg_hba.conf


1
Tôi đã cài đặt nhưng vị trí là tại / usr / local / bin / psql và khi tôi chạy sudo -u postgres, nó nói sudo: người dùng không xác định: postgres
fadelakin

psql sẽ hoạt động nếu bạn muốn sử dụng pg trong ứng dụng của mình. Hãy thử gõ vào thiết bị đầu cuối psql kim loại-thư mục_development. Kết quả nào? Nếu không, sau đó thử cài đặt lại postgres thử ví dụ này
Mihail Davydenkov

Khi tôi chạy psql metallic-library_development, tôi nhận được psql: không thể kết nối với máy chủ: Không có tệp hoặc thư mục như vậy Máy chủ có chạy cục bộ và chấp nhận các kết nối trên ổ cắm tên miền Unix "/tmp/.s.PGQuery.5432" không? Tôi là một lập trình viên đường ray mới bắt đầu và tôi không biết điều đó có nghĩa là gì. Tôi đã thử cài đặt lại postgres nhiều lần nhưng không gặp may.
fadelakin

23

Để khắc phục các loại vấn đề với Postgres và làm việc với Postgres trên Mac OSX, đây có lẽ là TỐT NHẤTdễ nhất giải pháp mà tôi đã tìm thấy cho đến nay:

http://postgresapp.com/

Chỉ cần tải về, cài đặt và hạnh phúc :)


19
  1. Gỡ cài đặt pg:

    gem uninstall pg
  2. Gỡ cài đặt postgres:

    brew uninstall postgres
  3. Nuke thư mục postgres có thể kéo dài với một loạt các công cụ cũ trong đó:

    rm -rf /usr/local/var/postgres
  4. Khởi động lại (có thể không cần thiết)

  5. Cài đặt lại pg:

    brew install postgres
  6. Nhận xét của tôi trong câu trả lời của Chris Slade bắt đầu một cách khó khăn, bây giờ tôi sử dụng các dịch vụ sản xuất bia đã đơn giản hóa cuộc sống của tôi theo nhiều cách:

    brew install services
  7. Và bắt đầu pg với nó:

    brew services start postgresql
  8. Cài đặt lại đá quý:

    gem install pg

Và bobsyouruncle.


3
Hãy cẩn thận với phương pháp này ... đây là một cách tiếp cận trái đất thiêu đốt và rất có thể sẽ phá hủy bất kỳ dbs địa phương nào bạn hiện có. Hãy xem github.com/copiousfreetime/launchy nơi bạn có thể làm lunchy stop postgrestheo saulunchy start postgres
lacostenycoder

trên Ubuntu tôi tin rằng sudo apt purge postgresqlhoặc bất kỳ postgresqlpachage nào khác là đủ và nó sẽ phá hủy mọi thứ.
Fabrizio Bertoglio

Tôi đã làm điều này và bây giờ nhận được lỗi sau: postgresql_ad CHƯƠNG.rb: 709: trong `cứu trong kết nối ': FATAL: cơ sở dữ liệu" project3_development "không tồn tại (ActiveRecord :: NoDatabaseError). Tôi nên làm gì ? Tôi thực sự có thể nhìn thấy cơ sở dữ liệu trong rubymine.
Franky Doul

13

kiểm tra tập tin postgresql.conf (bật ubuntutrong /etc/postgresql/XX/main/postgresql.conf ) và tìm dòng có nội dung:

listen_addresses="localhost"

hãy thử thay đổi nó thành:

listen_addresses="*"

nó sẽ chấp nhận mọi IP, tiếp theo kiểm tra dòng có nội dung:

port=5432

và kiểm tra xem có phải cùng một cổng của cơ sở dữ liệu của bạn không, theo mặc định trên postgresql-9.2 của tôi sử dụng 5433 thay vì 5432 , đừng quên khởi động lại máy chủ postgres,

Chúc may mắn!


Đây là vấn đề của tôi là tốt. Tôi nghi ngờ điều đó xảy ra vì tôi đã chạy 9.3 khi tôi cố gắng "nâng cấp" (tức là cài đặt 9.5). Tôi đoán nó đã cố tỏ ra lịch sự và tự cấu hình để chạy song song trên một cổng khác thay vì tiếp quản quá trình cài đặt / quy trình hiện có.
Joel Fouse

12

Theo mô tả của @Magne, lỗi PG::ConnectionBad - could not connect to server: Connection refusedcó thể được trình bày sau khi nâng cấp phiên bản chính / phụ (ví dụ 9.5 -> 9.6hoặc 9 -> 10) của PostgreQuery.

Tôi đã gặp lỗi này sau khi chạy brew upgrade postgresqlsau khi phát hành PostgreSQL phiên bản 9.6. Vấn đề là việc nâng cấp phiên bản chính / phụ yêu cầu các bước bổ sung để chuyển ngày cũ sang phiên bản mới.

Làm thế nào để kiểm tra nếu đây là vấn đề của bạn

Bạn có thể kiểm tra xem đây có phải là sự cố hay không bằng cách kiểm tra công thức pha chế mới nhất Phiên bản PostgreQuery được cài đặt với 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

... và sau đó so sánh nó với PG_VERSION hiện tại

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

Nếu PG_VERSION ít hơn công thức pha chế mới nhất và sự khác biệt là thay đổi phiên bản chính / phụ, thì đây có lẽ là vấn đề của bạn.

Cách khắc phục (tức là cách nâng cấp dữ liệu)

Hướng dẫn dưới đây là để nâng cấp từ 9,5 lên 9,6. Thay đổi số phiên bản cho phù hợp với bản nâng cấp của riêng bạn

Bước 1. Đảm bảo PostgreSQL được tắt:

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

Bước 2. Tạo một cơ sở dữ liệu nguyên sơ mới:

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

Bước 3. Kiểm tra phiên bản nhị phân cũ và mới là gì:

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

Lưu ý rằng trong ví dụ này tôi đang nâng cấp từ nhị phân 9.5.4 lên nhị phân 9.6.1

Bước 4. Di chuyển dữ liệu hiện tại sang cơ sở dữ liệu mới bằngtiện ích pg_upTHER .

$ 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 cờ chỉ định thư mục dữ liệu hiện tại
  • -D cờ chỉ định thư mục dữ liệu mới sẽ được tạo
  • -b chỉ định nhị phân cũ
  • -B chỉ định nhị phân mới mà chúng tôi nâng cấp lên

Bước 5. Di chuyển thư mục dữ liệu cũ ra khỏi đường

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

Bước 6. Di chuyển thư mục dữ liệu mới được tạo vào nơi PostgreSQL dự kiến

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

Bước 7. Bắt đầu lại PostgreSQL

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

Bước 8. Nếu bạn đang sử dụng đá quý pg cho Rails, bạn nên biên dịch lại bằng cách gỡ cài đặt và cài đặt lại đá quý (bỏ qua bước này nếu bạn không sử dụng đá quý pg)

$ gem uninstall pg
$ gem install pg

Bước 9. (tùy chọn) Sau khi bạn tự trấn an mình rằng mọi thứ đều hoạt động tốt, bạn có thể chạy lấy lại một số dung lượng đĩa bằng lệnh sau:

brew cleanup postgresql

... và nếu bạn cảm thấy thực sự dũng cảm, bạn có thể xóa thư mục dữ liệu PostgreSQL cũ bằng lệnh sau

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

(Câu trả lời này dựa trên một bài đăng blog tuyệt vời https://keita.blog/2016/01/09/homebrew-and-postgresql-9-5/ với một số bổ sung)



7

Như đã đề xuất ở trên, tôi vừa mở Ứng dụng Postgres trên máy Mac của mình, nhấp vào Mở Psql, đóng psqlcửa sổ, khởi động lại máy chủ rails trong thiết bị đầu cuối của tôi và nó hoạt động trở lại, không còn lỗi nữa.

Tin tưởng con voi: http://postgresapp.com/


6

Tôi gặp vấn đề tương tự sau khi cập nhật máy mac của mình trên Osx Movaje.

tôi tìm thấy giải pháp này:

Trước tiên hãy thử dòng lệnh dưới đây trong thiết bị đầu cuối của bạn:

brew services restart postgresql

Nếu không có gì thay đổi:

ps aux | grep postgres

Nếu vẫn không có gì thay đổi:

ls -ls | grep post

Lệnh cuối cùng để sửa nó, loại bỏ tệp khóa postgres bằng cách thực thi từ root:

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

và sau đó :

brew services restart postgresql

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

Hy vọng rằng sẽ giúp :)

Trân trọng !!


5

Nếu bạn gặp phải vấn đề này sau khi thực hiện brew upgradenâng cấp postgres lên phiên bản chính mới (f.ex 9.3.0lên 9.4.0hoặc cao hơn), thì hãy làm điều này:

Bản sửa lỗi của @ dmitrygusev từ https://github.com/Homebrew/homebrew/issues353240

Theo hướng dẫn di chuyển chính thức [Postgresql] đã giúp:

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

Đó là tất cả. Kiểm tra xem quá trình nhập có diễn ra tốt không, sau đó xóa các bản sao lưu:

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

Vấn đề ở đây là trên một phiên bản nâng cấp chính của postgres, cần phải tạo lại / di chuyển cơ sở dữ liệu của bạn. Và có thể chownthư mục hoặc gọi thủ công initdb.

Xem thêm: Làm cách nào để nâng cấp PostgreSQL từ phiên bản 9.5 lên phiên bản 9.6 mà không mất dữ liệu?


Một số mẹo khác, có thể có ích, trong trường hợp bạn không sử dụng Homebrew:

Cách dừng máy chủ PG theo cách thủ công:

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

Cách khởi động máy chủ PG theo cách thủ công:

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


4

Xác định vị trí tệp postgres của bạn, tệp có thể nằm trong /usr/local/var/postgres/hoặc /usr/var/postgres/sau đó xóa postmaster.pidtệp có trong thư mục đó.


3

đặt host: localhosttrong database.ymltập tin và chạy lệnh này:

rake db:create db:migrate  

2

Người dùng Mac có ứng dụng Postgres có thể muốn mở ứng dụng (tìm kiếm nổi bật Postgres hoặc tìm biểu tượng con voi trong thanh menu của bạn). Trong đó bạn có thể thấy một chữ X màu đỏ với thông báo: "Tập tin postmaster.pid cũ". Thật không may, một tìm kiếm nổi bật sẽ không hiển thị vị trí của tập tin này. Nhấp vào "Cài đặt máy chủ ..." và trong hộp thoại mở ra, nhấp vào nút "Hiển thị" để mở Thư mục dữ liệu. Điều hướng một thư mục trong (đối với tôi đó là "var-10") và xóa postmaster.pidtệp.

Quay trở lại ứng dụng Postgres và nhấp vào nút Bắt đầu. Chữ X màu đỏ đó sẽ biến thành dấu kiểm màu xanh lục với thông báo "Đang chạy". Bây giờ bạn sẽ có thể chạy thành công các lệnh Rails như rails servertrong thiết bị đầu cuối.

Cài đặt máy chủ ứng dụng Postgres - Hiển thị thư mục dữ liệu


Điều này đã giải quyết nó cho tôi. Cảm ơn rất nhiều cho giải pháp! Đó là một quá trình!
tẩy chay

2

Tôi vừa gặp vấn đề này tối nay, làm việc trên một ứng dụng đường ray mà tôi đã làm việc được một thời gian. Vấn đề của tôi chỉ đơn giản là thực tế là máy chủ postgresql của tôi không chạy .

Tôi đã đi đến đầu màn hình (Tôi trên máy Mac) và nhấp vào biểu tượng con voi nhỏ và nhấp vào 'Bắt ​​đầu'.

Bật máy chủ của chúng tôi không bật.

Hy vọng điều này cung cấp một giải pháp đơn giản cho một ai đó.


1

Đó chắc chắn là câu trả lời của @Chris Slade đã giúp tôi.

Tôi đã viết một đoạn script nhỏ để giết các tiến trình còn lại nếu hữu ích:

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

Tôi gặp vấn đề tương tự trong sản xuất (phát triển mọi thứ đều hoạt động), trong trường hợp của tôi, máy chủ DB không nằm trên cùng một máy với ứng dụng, vì vậy cuối cùng, những gì hoạt động chỉ là di chuyển bằng cách viết:

bundle exec rake db:migrate RAILS_ENV=production

và sau đó khởi động lại máy chủ và mọi thứ đã hoạt động.


1

Tôi biết điều này là muộn nhưng có thể giúp ai đó. Tôi có những vấn đề giống nhau. Hóa ra tôi là hai phiên bản của postgres 9.1 và 9.5. Tôi đã gỡ cài đặt 9.1 và 9.5 và cài đặt lại 9.5 và nó hoạt động với tôi.



1

Tôi đã từng gặp vấn đề tương tự. Tôi kiểm tra dòng cuối cùng của PostgreSQLtệp nhật ký /var/log/postgresql. Có một tham số cấu hình không được nhận dạng trong tệp /etc/postgresql/9.5/main/postgresql.conf . Bình luận dòng lỗi trong postgresql.confgiải quyết vấn đề của tôi.


1

Vấn đề của tôi là trong tập tin application.yml của tôi . Cơ sở dữ liệu của tôi urltrên herokulà không sử dụng cổng 5342. Kiểm tra của bạn herokucấu hình var DATABASE_URL. Đảm bảo khớp chính xác với trong application.yml của bạn cho cơ sở dữ liệu áp dụng.


1

Tôi đã có cùng một vấn đề, giải thích này đã giải quyết nó cho tôi: http://blog.55minutes.com/2013/09/postgresql-93-brew-upTHER/

Bước quan trọng là nhìn vào đuôi /usr/local/var/postgres/server.log của tôi , cho tôi biết vấn đề thực sự là gì, đó là tôi đã hoàn thành quá trình nâng cấp PostgreQuery


Tình huống tương tự ở đây - chìa khóa cho tôi cũng là nhìn vào server.log. Tìm thấy câu trả lời của tôi ở đây: stackoverflow.com/questions/25970132/ Kẻ
Nathan Wallace

1

Tôi chỉ chạy lệnh này sudo service postgresql restart và mọi thứ hoạt động trở lại.


0

Tôi dừng máy chủ đường ray, chạy rake db:migratevà bắt đầu rails s.


0

Tôi gặp phải lỗi này sau khi theo dõi một brew upgradepostgresql đã được cập nhật. Tôi tìm thấy chính xác làm thế nào để khắc phục vấn đề của tôi từ bài viết tuyệt vời này. Tôi đã có thể nhận được các postgres sao lưu và chạy và thậm chí di chuyển trên tất cả các cơ sở dữ liệu hiện có của tôi. https://coderwall.com/p/ti4amw/how-to-launch-postgresql-after-upTHER


0

Tôi chỉ gặp vấn đề này và không có giải pháp nào được đề xuất cho tôi. Sau rất nhiều lần googling, tôi đã tìm ra giải pháp. Đây là những gì làm việc cho tôi.

Đầu tiên, tôi phải chạy lệnh này để khởi động máy chủ và tôi đoán đặt vị trí của tệp cấu hình.

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

Sau đó, tôi chạy lệnh này để truy cập postgres

psql postgres

Và tại dấu nhắc của postgres, sau đó tôi gõ "\ du" để liệt kê các vai trò

postgres=# \du

Vai trò postgres bị thiếu nên tôi phải tạo nó bằng lệnh này

CREATE ROLE POSTGRES WITH SUPERUSER CREATEDB CREATEUSER CREATEROLE REPLICATION BYPASSRLS ;

Điều đó đã giải quyết vấn đề của tôi và tôi hy vọng điều này sẽ giúp người khác.


0

Bạn không phải xóa postmaster.pidtệp vì điều này có thể mời tham nhũng dữ liệu.

Lựa chọn? Đơn giản killlà quá trình (không sử dụng kill -9, chỉ cần giết bình thường).

Sau đó, chỉ cần khởi động lại máy chủ postgres và bạn tốt để đi!

Dưới đây là các bước để đạt được điều đó:

  1. Xác định vị trí và mở postmaster.pidtệp (của tôi là trên Mac Sierra)

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

  2. Sao chép PID - đó là số trên dòng đầu tiên của postmaster.pidtệp

  3. Giết quá trình với kill PID, ví dụ, nếu PID của tôi là 381, tôi sẽ làmkill 381
  4. Khởi động lại Postres - nếu sử dụng brew, hãy làm brew services start postgresql. Hoặc nếu sử dụng postgresapp, chỉ cần nhấp vào startnút

0

Trình quản lý gói Homebrew bao gồm các trình khởi chạy tự động khởi động. Để biết thêm thông tin chạy brew info postgres.

Bắt đầu bằng tay:

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

Dừng thủ công:

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

Bắt đầu tự động:

"Để có launchd bắt đầu postgresql ngay bây giờ và khởi động lại khi đăng nhập:"

brew services start postgresql

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.