PostgreSQL
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> PostgreSQL

Ruby 'pg' gem liên kết đến bản sao sai của libpq.5.dylib (trên OSX)

Cả nguyên nhân của sự cố và giải pháp dễ dàng đều trở nên rõ ràng khi tôi chạy bin/pg_config tại dòng lệnh.

pg_config tạo ra các biến được sử dụng để kiểm soát quá trình biên dịch và liên kết. Đặc biệt quan tâm là LIBDIR và LDFLAGS. LIBDIR chỉ định vị trí cho các thư viện tĩnh, trong khi LDFLAGS cung cấp các vị trí để tìm kiếm các thư viện động. Trên hệ thống của tôi, LIBDIR đã được đặt chính xác thành /LibraryPostgreSQL/9.3/lib , nhưng LDFLAGS được đặt như sau:

LDFLAGS = -L../../../src/common -L/usr/local/lib -L/opt/local/20140109/lib -Wl,-dead-strip-dylibs

Kể từ libpq.5.dylib không có mặt tại bất kỳ vị trí nào trong số này, không tìm thấy viên đá quý và thay vào đó họ tìm thấy một phiên bản cũ hơn đã được cài đặt tại /usr/lib .

Một cách để khắc phục điều này là đưa vị trí tệp chính xác vào LDFLAGS, có thể bằng cách sửa đổi mã trong extconf.rb tạo tệp cấu hình. Tuy nhiên, cách khắc phục dễ dàng hơn nhiều trong trường hợp này là chỉ cần thêm liên kết biểu tượng trong /usr/local/lib đến đúng vị trí tệp:

/usr/local/lib> ln -s /Library/PostgreSQL/9.3/lib/libpq.5.dylib libpq.5.dylib

Nếu bạn gặp sự cố tương tự, chỉ cần kiểm tra đầu ra của pg_config và xem liệu bạn có thể đặt một liên kết tượng trưng đến đúng vị trí tệp trong một trong các thư mục đã được LDFLAGS chỉ định hay không.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. LỖI:không thể truy cập tệp “$ libdir / plpython2” - LỖI:không thể truy cập tệp “$ libdir / plpython3”

  2. Ràng buộc duy nhất về sự kết hợp của hai cột?

  3. Truy vấn Postgres phức tạp

  4. Sử dụng regex ở WHERE trong Postgres

  5. Điều cần kiểm tra xem Khả năng sử dụng bộ nhớ PostgreSQL có cao không