Tôi đang làm việc với postgres 13 (nhánh REL_13_STABLE) từ mã nguồn và tôi đang sử dụng Apache AGE phiên bản 1.3.0 cho việc đó từ (nhánh release/PG13/1.3.0) từ mã nguồn apachea/age tương thích với phiên bản postgres tôi đang sử dụng, nhưng khi tôi thử TẠO PHẦN MỞ RỘNG tuổi;
Tôi nhận được lỗi sau:
Tôi đang sử dụng Postgres 13 từ nguồn (nhánh Rel_13_STRATE) và tôi đang sử dụng phiên bản 1.3.0 của Apacheage từ nguồn apachea/age (nhánh Release/PG13/1.3.0) sẽ hoạt động với những gì tôi đang sử dụng. phiên bản postgres được sử dụng tương thích, nhưng khi tôi cố gắng tạo thời đại mở rộng, tôi gặp lỗi sau:
postgres=# TẠO PHẦN MỞ RỘNG tuổi;
LỖI: không thể tải thư viện "/usr/local/pgsql-13/lib/age.so": /usr/local/pgsql-13/lib/age.so: ký hiệu không xác định: hash_any_extended
mặc dù tôi đã kiểm tra /usr/local/pgsql-13/lib/
Và tuổi.vậy
đã được lưu trữ ở đó, do đó lỗi chủ yếu là do tôi đang sử dụng các phiên bản Postgresql và Apache AGE không tương thích, mặc dù tôi đang sử dụng các nhánh hỗ trợ PG13 vốn phải tương thích. Vậy nếu đây là trường hợp thì nguyên nhân gây ra sự cố là gì và cách giải quyết như thế nào?.
Mặc dù tôi đã kiểm tra /usr/local/pgsql-13/lib/ và age.so được lưu trữ ở đó, nhưng lỗi chủ yếu là do tuyên bố rằng tôi đang sử dụng phiên bản PostgreSQL và Apacheage không tương thích, mặc dù tôi đang sử dụng một nhánh hỗ trợ PG13, nhánh này phải tương thích. Nếu vậy, nguyên nhân của vấn đề là gì và làm thế nào để giải quyết nó?
Thêm câu trả lời
Bạn đã xây dựng tiện ích mở rộng dựa trên phiên bản khác của PostgreSQL.
Bạn đã xây dựng tiện ích mở rộng trên một phiên bản PostgreSQL khác.
Có thể một số phiên bản khác của Apache AGE hoặc Postgres vẫn còn các tệp trong hệ thống của bạn. Để đảm bảo Postgres 13 đang được sử dụng, bạn có thể chạy lệnh psql -c "CHỌN phiên bản();"
trong thiết bị đầu cuối của bạn.
Bạn vẫn có thể có một số phiên bản khác của tệp Apacheage hoặc Postgres trên hệ thống của mình. Để đảm bảo bạn đang sử dụng Postgres13, hãy chạy lệnh psql -c "SELECT VERSION();" trong terminal.
Để giải quyết vấn đề này, hãy thử chạy các lệnh sau từ thư mục mã nguồn Apache AGE của bạn:
Để giải quyết vấn đề này, hãy thử chạy lệnh sau từ thư mục mã nguồn Apacheage của bạn:
sudo làm cho PG_CONFIG=/usr/local/pgsql-13/bin/pg_config sạch
sudo tạo PG_CONFIG=/usr/local/pgsql-13/bin/pg_config
sudo make PG_CONFIG=/usr/local/pgsql-13/bin/pg_config cài đặt
Nếu lỗi vẫn tiếp diễn sau khi chạy lệnh dọn dẹp và xây dựng lại Apache AGE, bạn có thể cân nhắc gỡ cài đặt cả PostgreSQL và Apache AGE, sau đó cài đặt lại chúng bằng các phiên bản tương thích khác.
Nếu lỗi vẫn tiếp diễn sau khi chạy các lệnh dọn dẹp và xây dựng lại Apache Age, bạn có thể cân nhắc việc gỡ cài đặt PostgreSQL và Apache Age, sau đó cài đặt lại chúng bằng các phiên bản tương thích khác.
Lưu ý: bạn có thể sử dụng nhánh PG13
thay vì phát hành/PG13/1.3.0
chi nhánh.
LƯU Ý: Bạn có thể sử dụng nhánh PG 13 thay vì nhánh phát hành/PG 13/1.3.0.
Tôi tin rằng tiện ích mở rộng ApacheAge của bạn không được xây dựng đúng cách. Hãy thử xây dựng lại nó và đảm bảo chạy thử nghiệm hồi quy sau khi xây dựng tiện ích mở rộng. Hãy thử chạy các lệnh bên dưới trong thư mục nguồn ApacheAge của bạn:
Tôi tin rằng tiện ích mở rộng ApacheAge của bạn không được xây dựng chính xác. Hãy thử xây dựng lại nó và đảm bảo chạy thử nghiệm hồi quy sau khi xây dựng tiện ích mở rộng. Hãy thử chạy lệnh sau trong thư mục nguồn ApacheAge:
làm sạch PG_CONFIG=/usr/local/pgsql-13/bin/pg_config
tạo PG_CONFIG=/usr/local/pgsql-13/bin/pg_config
thực hiện cài đặt PG_CONFIG=/usr/local/pgsql-13/bin/pg_config
thực hiện installcheck PG_CONFIG=/usr/local/pgsql-13/bin/pg_config
Các lệnh trên sẽ cài đặt sạch mã nguồn ApacheAge của bạn.
Lệnh trên sẽ thực hiện cài đặt sạch mã nguồn ApacheAge.
Lỗi biểu tượng chưa xác định: hash_any_extended
gợi ý rằng tuổi.vậy
thư viện được xây dựng dựa trên phiên bản PostgreSQL khác mà bạn đang sử dụng. Bạn có thể thử tải xuống mã nguồn từ thư mục PostgreSQL chính thức và kiểm tra các phiên bản phụ khác nhau. Có các phiên bản phụ của PostgreSQL từ 13.0 đến 13.11. Ngoài ra, hãy đảm bảo bạn đã tạo một bản sao sạch từ kho lưu trữ AGE để sử dụng với phiên bản PostgreSQL khác. Nó ngăn các tệp cũ từ các bản cài đặt cũ hơn làm ô nhiễm bản dựng mới.
Lỗi UNDEFINED SYMBOL: HASH_ANY_EXTENDED chỉ ra rằng thư viện age.so được xây dựng dựa trên một phiên bản PostgreSQL khác mà bạn đang sử dụng. Bạn có thể thử tải xuống mã nguồn từ thư mục PostgreSQL chính thức và kiểm tra các phiên bản nhỏ khác nhau. PostgreSQL có các phiên bản nhỏ từ 13.0 đến 13.11. Ngoài ra, hãy đảm bảo bạn tạo một bản sao sạch từ kho lưu trữ AGE để sử dụng với các phiên bản PostgreSQL khác nhau. Nó ngăn chặn các tập tin cũ từ các bản cài đặt cũ làm nhiễm bẩn các bản dựng mới.
Dòng sau đây có nghĩa là bạn đang sử dụng phiên bản PostgreSQL không tương thích:
Dòng sau cho biết bạn đang sử dụng phiên bản PostgreSQL không tương thích:
LỖI: không thể tải thư viện "/usr/local/pgsql-13/lib/age.so": /usr/local/pgsql-13/lib/age.so: ký hiệu không xác định: hash_any_extended
Xác minh các phiên bản tương thích của PostgreSQL trong phần AGE Releases trên github: PHÁT HÀNH TUỔI
Xác minh các phiên bản tương thích của PostgreSQL trong phần phát hành AGE GitHub: Bản phát hành AGE
Bạn có thể cài đặt phiên bản tương thích của PostgreSQL theo liên kết sau:
Tải xuống PostgreSQL
Bạn có thể cài đặt phiên bản PostgreSQL tương thích qua liên kết sau: Tải xuống PostgreSQL
Cách an toàn nhất để sửa lỗi này là gỡ cài đặt postgres bằng cách sử dụng thực hiện gỡ cài đặt
Và làm sạch
và cũng xóa các tập tin trong đường dẫn usr/local/pgsql-13
, sau đó tiến hành cài đặt lại postgres và tiện ích mở rộng và đảm bảo các nhánh là phiên bản chính xác/tương thích
Cách an toàn nhất để khắc phục sự cố là gỡ cài đặt postgres bằng cách sử dụng make uninstall và Lean và xóa các tệp trong đường dẫn usr/local/pgsql-13, sau đó cài đặt lại postgres và các mô-đun mở rộng và đảm bảo nhánh là phiên bản chính xác/tương thích
Lỗi này cho thấy bạn có thể đã cài đặt nhiều phiên bản PostgreSQL khác nhau trên PC và phiên bản không đúng đang được sử dụng khi bạn cố gắng tạo TUỔI sự mở rộng.
Lỗi này cho biết rằng bạn có thể đã cài đặt một phiên bản PostgreSQL khác trên PC của mình và phiên bản sai đã được sử dụng khi bạn cố gắng tạo tiện ích mở rộng AGE.
Trong lệnh postgreSQL của bạn, hãy nhập:
Trong CLI PostgreSQL của bạn, hãy nhập:
CHỌN phiên bản();
để tìm phiên bản PostgreSQL của bạn. Nếu phiên bản trả về không phải là PosgreSQL 13, hãy thay đổi đường dẫn để trỏ đến bin của phiên bản chính xác. Đảm bảo bạn có các thư mục riêng biệt cho các phiên bản PostgreSQL khác nhau đã cài đặt.
Tìm phiên bản PostgreSQL của bạn. Nếu phiên bản được trả về không phải là PosgreSQL 13, hãy thay đổi đường dẫn để trỏ đến phiên bản bin chính xác. Đảm bảo bạn cài đặt các thư mục riêng biệt cho các phiên bản PostgreSQL khác nhau.
Nếu không, nếu phiên bản đúng được trả về, một khả năng khác là AGE không được xây dựng đúng cách. Tham khảo câu trả lời của @wendel trong trường hợp đó.
Ngược lại, nếu trả về đúng phiên bản, một khả năng khác là tuổi đó không được xây dựng chính xác. Trong trường hợp này, vui lòng tham khảo câu trả lời của @ Wendell.
Đầu tiên hãy xóa sạch tất cả các cài đặt trước đó bằng cách sử dụng
Trước tiên hãy xóa tất cả các cài đặt trước đó bằng lệnh sau
sudo làm sạch
bây giờ hãy cài đặt lại postgres v13 từ github hãy đảm bảo kiểm tra pg13
Bây giờ hãy cài đặt lại Postgres V13 từ GitHub, đảm bảo kiểm tra PG13
https://github.com/postgres/postgres.git
sau đó cài đặt age, thiết lập env và chạy
Sau đó cài đặt age, đặt env và chạy
sudo làm cho PG_CONFIG=/usr/local/pgsql-13/bin/pg_config sạch
sudo tạo PG_CONFIG=/usr/local/pgsql-13/bin/pg_config
sudo make cài đặt PG_CONFIG=/usr/local/pgsql-13/bin/pg_config cài đặt
sudo make PG_CONFIG=/usr/local/pgsql-13/bin/pg_config kiểm tra cài đặt
Tôi khuyên bạn nên sử dụng nhánh PG13 thay vì nhánh release/PG13/1.3.0. Tôi đã gặp lỗi tương tự khi sử dụng phiên bản mới hơn khi tôi đã cài đặt và phiên bản cũ hơn trước đó.
Bạn nên cài đặt lại postgreSQL 13 từ mã nguồn. Sau đó, sao chép kho lưu trữ git và di chuyển đến nhánh PG13 và cài đặt AGE từ đó bằng lệnh.
Tôi khuyên bạn nên sử dụng nhánh PG13 thay vì nhánh Release/PG13/1.3.0. Tôi gặp phải lỗi tương tự khi sử dụng phiên bản AGE mới hơn, trong khi trước đó tôi đã cài đặt phiên bản cũ hơn. Bạn nên cài đặt lại PostgreSQL13 từ nguồn. Sau đó sao chép kho git và di chuyển đến nhánh pg13 và cài đặt age từ đó bằng lệnh.
thực hiện cài đặt PG_CONFIG=/usr/local/pgsql-13/bin/pg_config
thực hiện PG_CONFIG=/usr/local/pgsql-13/bin/pg_config installcheck
Lỗi này chỉ ra rằng tuổi.vậy
thư viện được xây dựng dựa trên phiên bản khác của PostgreSQL.
Để giải quyết vấn đề, hãy thử các tùy chọn sau:
Lỗi này cho biết thư viện age.so được xây dựng dựa trên một phiên bản PostgreSQL khác. Để giải quyết vấn đề này, hãy thử các tùy chọn sau:
Hãy đảm bảo rằng bạn đang sử dụng đúng nhánh và tương thích của Apache
AGE và PostgreSQL.
Đảm bảo rằng bạn đang sử dụng đúng nhánh tương thích và chính xác của Apacheage và PostgreSQL.
Dọn dẹp thư mục mã nguồn Apache AGE của bạn bằng lệnh này:
Làm sạch thư mục mã nguồn Apacheage của bạn bằng lệnh sau:
sudo làm cho PG_CONFIG=/usr/local/pgsql-13/bin/pg_config sạch
Chạy các lệnh này để xây dựng lại Apache AGE với PostgreSQL chính xác
phiên bản:
Chạy lệnh sau để xây dựng lại phiên bản cũ của Apache với phiên bản PostgreSQL chính xác:
sudo tạo PG_CONFIG=/usr/local/pgsql-13/bin/pg_config
sudo make PG_CONFIG=/usr/local/pgsql-13/bin/pg_config cài đặt
Nếu lỗi vẫn còn thì hãy thử gỡ cài đặt cả Apache AGE và
PostgreSQL hoàn toàn và cài đặt lại bằng các phiên bản tương thích.
Nếu lỗi vẫn còn, hãy thử gỡ cài đặt hoàn toàn Apacheage và PostgreSQL rồi cài đặt lại bằng phiên bản tương thích.
Bạn có thể kiểm tra phiên bản PostgreSQL của mình bằng lệnh này:
Bạn có thể kiểm tra phiên bản PostgreSQL của mình bằng lệnh sau:
psql -c "CHỌN phiên bản();
Ngoài ra hãy đảm bảo bạn có bản sao sạch của Apache AGE.
Ngoài ra, hãy đảm bảo rằng bạn có một bản sao sạch của thời Apache.
Thêm câu trả lời
Cảm ơn nó đã hoạt động, btw nó là làm sạch PG_CONFIG=/usr/local/pgsql-13/bin/pg_config
với đường dẫn tệp cấu hình được cung cấp, cảm ơn bạn một lần nữa.
Cảm ơn nó đã hoạt động, nhân tiện, nó đã được tạo nạc pg_config=/usr/local/pgsql-13/bin/pg_config và cung cấp đường dẫn tệp cấu hình, cảm ơn một lần nữa.
Tôi mừng là nó hoạt động! Xin lỗi về điều đó, tôi quên đưa đường dẫn tệp vào làm sạch
. Tôi sẽ chỉnh sửa và thêm nó ngay bây giờ để mọi thứ rõ ràng hơn
Tôi rất vui vì nó đã hoạt động! Xin lỗi, tôi quên đưa đường dẫn tệp vào Make Clear. Bây giờ tôi sẽ chỉnh sửa và thêm vào để mọi thứ rõ ràng
Tôi là một lập trình viên xuất sắc, rất giỏi!