2013-07-23 26 views
58

Sau khi khởi động MacBook Pro của tôi Tôi không thể khởi động máy chủ cơ sở dữ liệu:Postgres - Fatal: các file cơ sở dữ liệu không tương thích với máy chủ

could not connect to server: No such file or directory 
Is the server running locally and accepting 
connections on Unix domain socket "/tmp/.s.PGSQL.5432"? 

Tôi đã kiểm tra các bản ghi và các dòng sau xuất hiện lặp đi lặp lại:

FATAL: database files are incompatible with server 
DETAIL: The data directory was initialized by PostgreSQL version 9.2, which is not compatible with this version 9.0.4. 

9.0.4 là phiên bản được cài đặt sẵn trên máy Mac, 9.2 [.4] là phiên bản tôi đã cài đặt qua Homebrew. Như đã đề cập, điều này được sử dụng để làm việc trước khi khởi động lại, do đó, nó không thể thực sự là một vấn đề biên dịch. Tôi cũng đã chạy lại initdb /usr/local/var/postgres -E utf8 và tệp vẫn tồn tại.

Thật không may, tôi khá mới đối với Postgres, vì vậy mọi trợ giúp sẽ được đánh giá rất nhiều.

+1

Làm cách nào để bạn bắt đầu postgres? Bạn có chắc là các điểm bắt đầu của bạn có phiên bản mới không? Bởi vì dựa trên các thông báo lỗi tôi nghĩ rằng cả hai phiên bản được cài đặt cạnh nhau ngay bây giờ. – fvu

+0

'pg_ctl -D/usr/local/var/postgres -l /usr/local/var/postgres/server.log start' - và phản hồi là' server starting' – klaffenboeck

+1

Khi bạn tìm kiếm các tệp có tên 'pg_ctl' I ' m khá chắc chắn bạn sẽ tìm thấy 2 bản sao. Và cái khớp với 'pg_ctl' sẽ là phiên bản cũ, và cái kia sẽ là phiên bản mới. – fvu

Trả lời

33

Hãy thử điều này: https://gist.github.com/joho/3735740

Nó làm việc hoàn hảo đối với tôi. Cuối cùng, nó cũng tạo cho bạn 2 tập lệnh bash để kiểm tra DB của bạn và xóa cụm cũ. Thực sự tuyệt vời.

xem: http://www.postgresql.org/docs/9.2/static/pgupgrade.html để hiểu thêm.

+2

Làm việc hoàn hảo cho tôi với việc di chuyển từ 9,4 đến 9,5. – tftdias

+0

Cũng làm việc cho tôi với việc di chuyển từ 9.3.4 đến 9.5.2 –

+1

Dưới đây là các bước để cập nhật 9.5.5 đến 9.6.1 bằng cách sử dụng Homebrew (macOS): https://gist.github.com/giannisp/b53a76047b07751ed3ade3c1db1d2c51 – Giannis

111

Nếu bạn đang tìm kiếm các tùy chọn hạt nhân (xóa tất cả dữ liệu và có được một cơ sở dữ liệu tươi), bạn có thể làm:

rm -rf /usr/local/var/postgres && initdb /usr/local/var/postgres -E utf8

và sau đó bạn sẽ cần phải rake db:setuprake db:migrate từ ứng dụng Rails của bạn để thiết lập lại.

+3

Nếu thông tin trên vẫn không hoạt động (trường hợp này xảy ra với tôi), hãy thử đặt tên thư mục dữ liệu mới cho initdb, ví dụ:/usr/local/var/postgres95. – mpelzsherman

+0

btw, ngay sau đó bạn có thể sẽ cần chạy 'createuser -s your_rails_app' để tạo người dùng postgres của đường ray. Xem https://stackoverflow.com/questions/11919391/postgresql-error-fatal-role-username-does-not-exist/25263322 – Meekohi

4

Tìm thấy trên internet, giải pháp này hoạt động tốt cho tôi.

Khi tôi cố gắng khởi động máy chủ postgresql sau khi nâng cấp lên OS X 10.10 Yosemite, tôi gặp phải một vấn đề tiếp theo:

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

không thể kết nối đến máy chủ: Không có tập tin hoặc thư mục như là máy chủ chạy cục bộ và chấp nhận các kết nối trên ổ cắm miền Unix "/var/pgsql_socket/.s.PGSQL.5432"? Được rồi, cho phép có một cái nhìn vào các bản ghi máy chủ:

cat /usr/local/var/postgres/server.log 

Fatal: các file cơ sở dữ liệu không tương thích với máy chủ CHI TIẾT: Các thư mục dữ liệu được khởi tạo bởi PostgreSQL phiên bản 9.2, mà không phải là tương thích với phiên bản này 9.3.5. Vì vậy, chúng ta cần phải làm theo một vài bước sau khi nâng cấp postgresql:

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

mv /usr/local/var/postgres /usr/local/var/postgres92 

brew update 

brew upgrade postgresql 

initdb /usr/local/var/postgres -E utf8 

pg_upgrade -b /usr/local/Cellar/postgresql/9.2.3/bin -B /usr/local/Cellar/postgresql/9.3.5_1/bin -d /usr/local/var/postgres92 -D /usr/local/var/postgres 

cp /usr/local/Cellar/postgresql/9.3.5_1/homebrew.mxcl.postgresql.plist ~/Library/LaunchAgents/ 

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

rm -rf /usr/local/var/postgres92 

Vậy là xong.

+1

Tôi đã sử dụng các bước trên để nâng cấp từ 9,53 lên 10,0. Lệnh pg_upgrade đã nâng cấp một chút. Lệnh mới là pg_upgrade -b /usr/local/Cellar/postgresql/9.5.3/bin/ -B /usr/local/Cellar/postgresql/10.0/bin -d/usr/local/var/postgres95 -D/usr/local/var/postgres – techvineet

Các vấn đề liên quan