Fedora 28 không thể nâng cấp Postgres lên 10


1

Khi khởi động máy chủ Postgres trên Fedora 28, tôi gặp lỗi này:

May 25 14:36:14 localhost.localdomain systemd[1]: Starting PostgreSQL database server...
May 25 14:36:14 localhost.localdomain postgresql-check-db-dir[11816]: An old version of the database format was found.
May 25 14:36:14 localhost.localdomain postgresql-check-db-dir[11816]: Use 'postgresql-setup --upgrade' to upgrade to version '10'
May 25 14:36:14 localhost.localdomain postgresql-check-db-dir[11816]: See /usr/share/doc/postgresql/README.rpm-dist for more information.
May 25 14:36:14 localhost.localdomain systemd[1]: postgresql.service: Control process exited, code=exited status=1
May 25 14:36:14 localhost.localdomain systemd[1]: postgresql.service: Failed with result 'exit-code'.
May 25 14:36:14 localhost.localdomain systemd[1]: Failed to start PostgreSQL database server.

Chạy nâng cấp cho tôi:

[root@localhost lib]# postgresql-setup --upgrade
 * Upgrading database.
ERROR: pg_upgrade tool failed
ERROR: Upgrade failed.
 * See /var/lib/pgsql/upgrade_postgresql.log for details.

Tệp nhật ký sau đó cung cấp cho tôi:

...
Setting frozenxid and minmxid counters in new cluster       ok
Restoring global objects in the new cluster                 
*failure*

Consult the last few lines of "pg_upgrade_utility.log" for
the probable cause of the failure.
Failure, exiting

(tại sao điều này cảm thấy giống như một cuộc săn tìm kho báu ...?), thì nhật ký đó mang lại cho tôi:

...
command: "/usr/bin/psql" --echo-queries --set ON_ERROR_STOP=on --no-psqlrc --dbname=template1 --host /var/lib/pgsql --port 5432 --username postgres -f "pg_upgrade_dump_globals.sql" >> "pg_upgrade_utility.log" 2>&1
/usr/bin/psql: symbol lookup error: /usr/bin/psql: undefined symbol: PQencryptPasswordConn

À! Rõ ràng tôi đang thiếu một số biểu tượng. Nhưng, làm thế nào để có được biểu tượng đó?

Câu trả lời:


3

Hóa ra, tôi có một số libs Postgres cũ nằm xung quanh:

[root@localhost pgsql]# ldd $(which psql)
    linux-vdso.so.1 (0x00007ffc3317a000)
    libpq.so.5 => /usr/pgsql-9.6/lib/libpq.so.5 (0x00007f27a2913000)
    libpthread.so.0 => /lib64/libpthread.so.0 (0x00007f27a26f4000)
    libreadline.so.7 => /lib64/libreadline.so.7 (0x00007f27a24a7000)

Như bạn thấy, libpqchỉ vào một phiên bản cũ hơn. Chỉ cần loại bỏ toàn bộ dir là giải pháp. Các libpqtrong /lib64/có các biểu tượng chính xác và nâng cấp của tôi chạy tốt.

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.