sql >> Database >  >> RDS >> Oracle

cx orakel ImportError

Dit houdt verband met de wijzigingen in de systeemintegriteitsbescherming (SIP) in El Capitan, die onder andere voorkomen dat DYLD_LIBRARY_PATH wordt overgenomen door voortgebrachte processen.

U kunt de cx_Oracle.so . wijzigen bibliotheek om het daadwerkelijke pad naar de Oracle-clientbibliotheek te gebruiken in plaats van het gezochte pad dat niet meer werkt; zorg ervoor dat je ORACLE_HOME . hebt nog steeds ingesteld om naar uw werkelijke directe klantlocatie te verwijzen, en houd er ook rekening mee dat het exacte pad gerapporteerd door ImportError moet worden gebruikt - de 3071542110 waarde kan variëren afhankelijk van de versie/build van Instant Client die u hebt geïnstalleerd:

export ORACLE_HOME=/usr/local/lib/share/oracle/installclient_11_2

install_name_tool -change \
  /ade/b/3071542110/oracle/rdbms/lib/libclntsh.dylib.11.1 \
  $ORACLE_HOME/libclntsh.dylib.11.1 \
  /Library/Python/2.7/site-packages/cx_Oracle.so

... maar dan kan die bibliotheek geen andere Oracle-versie vinden:

ImportError: dlopen(/Library/Python/2.7/site-packages/cx_Oracle.so, 2): Library not loaded: /ade/b/3071542110/oracle/ldap/lib/libnnz11.dylib
  Referenced from: /usr/local/lib/share/oracle/installclient_11_2/libclntsh.dylib.11.1
  Reason: image not found

U moet dus ook die bibliotheek wijzigen, waar u zich misschien minder prettig bij voelt:

install_name_tool -change \
  /ade/b/3071542110/oracle/ldap/lib/libnnz11.dylib \
  $ORACLE_HOME/libnnz11.dylib \
  $ORACLE_HOME/libclntsh.dylib.11.1

Afhankelijk van de exacte clientversie/build moet u het bestand mogelijk beschrijfbaar maken voordat u die opdracht uitvoert, met:

chmod 755 $ORACLE_HOME/libclntsh.dylib.11.1

Met die wijzigingen kan ik de cx_Oracle . uitvoeren tests op El Capitan.

Meer over install_name_change hier.

Het lijkt erop dat de 12c instant-client zo is gebouwd dat dit probleem wordt vermeden, dus upgraden naar die client wordt eenvoudiger dan het hacken van de 11g-bestanden.



  1. Een kolom wijzigen van Null naar Niet Null in SQL Server

  2. Ruby/PgSQL-fout bij het starten van Rails:kan een dergelijk bestand niet laden -- pg_ext (LoadError)

  3. Hier zijn drie redenen waarom u piekactiviteit in uw SQL-instantie zou kunnen zien

  4. Kunnen we threading gebruiken in PL/SQL?