PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

Ruby 'pg' klejnot łączący się z niewłaściwą kopią libpq.5.dylib (na OSX)

Zarówno przyczyna problemu, jak i łatwe rozwiązanie stały się oczywiste, gdy uruchomiłem bin/pg_config w wierszu poleceń.

pg_config generuje zmienne używane do sterowania kompilacją i łączeniem. Szczególnie interesujące są LIBDIR i LDFLAGS. LIBDIR określa lokalizację bibliotek statycznych, podczas gdy LDFLAGS zapewnia lokalizacje wyszukiwania bibliotek dynamicznych. W moim systemie LIBDIR został poprawnie ustawiony na /LibraryPostgreSQL/9.3/lib , ale LDFLAGS został ustawiony w następujący sposób:

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

Od libpq.5.dylib nie był obecny w żadnej z tych lokalizacji, klejnot nie znalazł go, a zamiast tego znalazł starszą wersję, która akurat była zainstalowana w /usr/lib .

Jednym ze sposobów naprawienia tego byłoby wstrzyknięcie poprawnej lokalizacji pliku do LDFLAGS, prawdopodobnie poprzez modyfikację kodu w extconf.rb który generuje plik konfiguracyjny. Jednak o wiele łatwiejszym rozwiązaniem w tym przypadku jest dodanie dowiązania symbolicznego w /usr/local/lib do właściwej lokalizacji pliku:

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

Jeśli napotkasz podobny problem, po prostu sprawdź dane wyjściowe pg_config i sprawdź, czy możesz umieścić dowiązanie symboliczne do właściwej lokalizacji pliku w jednym z katalogów, które są już określone przez LDFLAGS.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Dzień programisty PostgreSQL w Pradze 2016

  2. Sekwencja PostgreSQL oparta na innej kolumnie

  3. hibernacja nie mogła uzyskać następnej wartości sekwencji

  4. Rails:PG::UndefinedTable:ERROR:relacja ... nie istnieje

  5. SQL - Łączenie wielu podobnych zapytań