sql >> Databasteknik >  >> RDS >> PostgreSQL

Ruby 'pg' pärla som länkar till fel kopia av libpq.5.dylib (på OSX)

Både orsaken till problemet och en enkel lösning blev uppenbar när jag körde bin/pg_config på kommandoraden.

pg_config genererar de variabler som används för att styra kompilering och länkning. Av särskilt intresse är LIBDIR och LDFLAGS. LIBDIR anger platsen för statiska bibliotek, medan LDFLAGS tillhandahåller platser för att söka efter dynamiska bibliotek. På mitt system var LIBDIR korrekt inställt på /LibraryPostgreSQL/9.3/lib , men LDFLAGS ställdes in enligt följande:

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

Sedan libpq.5.dylib inte fanns på någon av dessa platser, ädelstenen kunde inte hitta den och hittade istället en äldre version som råkade vara installerad på /usr/lib .

Ett sätt att fixa detta skulle vara att injicera korrekt filplats i LDFLAGS, eventuellt genom att modifiera koden i extconf.rb som genererar konfigurationsfilen. Men en mycket enklare lösning i det här fallet är bara att lägga till en symbollänk i /usr/local/lib till rätt filplats:

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

Om du stöter på ett liknande problem, undersök bara utdata från pg_config , och se om du kan placera en symbollänk till rätt filplats i en av katalogerna som redan är specificerad av LDFLAGS.




  1. Hur man skapar Not Null-begränsning på kolumn i SQL Server-tabell - SQL Server / T-SQL självstudie del 51

  2. Välj de 3 senaste posterna där värdena för en kolumn är distinkta

  3. Tecken på att din databas inte längre fungerar för dig

  4. SNAPSHOT-isoleringsnivån