Làm cách nào để nâng cấp cơ sở dữ liệu postgresl? Lỗi không tương thích


26

Tôi đã cài đặt postgresql qua Homebrew.

Tôi có vấn đề sau khi nâng cấp:

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

Bất kỳ lời khuyên về cách nâng cấp? Tôi đã thử như sau:

$ pg_upgrade -d /usr/local/var/postgres/ -D /usr/local/var/postgres -b 
/usr/local/Cellar/postgresql/9.0.4/bin -B /usr/local/Cellar/postgresql/9.1.2/bin

Nó không hoạt động. Đây là đầu ra.

Performing Consistency Checks
Checking current, bin, and data directories                 ok
Checking cluster versions                                   
This utility can only upgrade to PostgreSQL version 9.1.
Failure, exiting

lỗi.

Câu trả lời:


36

Đối với tôi trên OS X với Homebrew thì nó như thế này.

  1. Đã cài đặt các postgres mới với Homebrew (bắt đầu gặp lỗi)
  2. mv /usr/local/var/postgres /usr/local/var/postgres.old
  3. initdb -D /usr/local/var/postgres
  4. pg_upgrade -b /usr/local/Cellar/postgresql/9.0.4/bin -B /usr/local/Cellar/postgresql/9.1.2/bin -d /usr/local/var/postgres.old -D /usr/local/var/postgres
  5. ./delete_old_cluster.sh (tập lệnh này được tạo tự động cho bạn trong thư mục hiện tại khi bạn thực hiện các bước trên)
  6. rm delete_old_cluster.sh

Tuyệt vời và chỉ là những gì tôi cần bạn! cảm ơn. Đặc biệt sau khi nâng cấp Lion đến từ Snow Leopard. Kiểm tra máy chủ.log google người !!
pjammer

Điều này làm việc hoàn hảo cho tôi, cảm ơn! Lưu ý rằng postgres không được chạy trước khi thực hiện các bước này, vì vậy nếu bạn đã cài đặt nó thông qua Homebrew, hãy đảm bảo dỡ bỏ tác nhân khởi chạy khiến nó tự động khởi động : launchctl unload ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist. Sau khi hoàn thành tất cả các bước trên, chỉ cần tải lại:launchctl load ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist
Markus Amalthea Magnuson

6

Đây là cách tôi đã làm trên fedora:

  • đổi tên thư mục dữ liệu cũ của bạn thành một cái gì đó như data.old
  • chạy postgresql-setup initdbnày sẽ tạo một thư mục dữ liệu mới
  • sau đó chạy pg_upgrade -b /usr/lib64/pgsql/postgresql-9.0/bin/ -B /usr/bin/ -d data.old/ -D data

Tôi nghĩ cho bạn đó sẽ là:

pg_upgrade -b /usr/local/Cellar/postgresql/9.0.4/bin -B /usr/bin/ -d /usr/local/var/postgres.old/ -D /usr/local/var/postgres/
  • bạn cũng muốn sao chép pg_hba.conf và postgresql.conf từ data.old sang thư mục dữ liệu mới.
  • khởi động lại postgresql

1

Tôi đã bỏ lỡ / quên dòng "initdb"

initdb -D / usr / local / var / postgres

Sau khi DB được tạo, pg_upTHER hoạt động trên hệ thống windows của tôi.


0

Đối với Arch Linux , có một giải pháp trong wiki hoạt động tốt với tôi:

pacman -S --needed postgresql-old-upgrade
su -
su - postgres -c 'mv /var/lib/postgres/data /var/lib/postgres/data-9.2'
su - postgres -c 'mkdir /var/lib/postgres/data'
su - postgres -c 'initdb --locale en_US.UTF-8 -E UTF8 -D /var/lib/postgres/data'
su - postgres -c 'pg_upgrade -b /opt/pgsql-9.2/bin/ -B /usr/bin/ -d /var/lib/postgres/data-9.2 -D /var/lib/postgres/data'
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.