2016-02-13 36 views
8

Próbuję połączyć się z aplikacji Pythona z pyodbc do serwera MS SQL. Mam zainstalowane pyodbc i unixODBC i próbowałem zainstalować sterownik MS dla Linux. Myślę, że problem polega na tym, że sterownik MS brakuje zależności, ale tak blisko, jak mogę powiedzieć, zależności są zainstalowane. Ponieważ sterownik Microsoft nie był możliwy do zainstalowania przez yum, musiałem wget i uruchomić skrypt instalacyjny. Tak więc jestem pewien, że muszę wykonać pewne ręczne prace, aby uzyskać poniższe linki do rozwiązania. Nie jestem pewien, jak to zrobić, ponieważ jestem nowicjuszem w Linuksie. Uwzględniłem również moje pliki konfiguracyjne na wszelki wypadek.Błędy łącznika z libmsodbcsql-13.0.so.0.0, uniemożliwiające połączenie pyODBC do MS SQL. CentOS 7

Kiedy biegnę ...

ldd /opt/microsoft/msodbcsql/lib64/libmsodbcsql-13.0.so.0.0 

pojawia się następujący ...

/opt/microsoft/msodbcsql/lib64/libmsodbcsql-13.0.so.0.0: /lib64/libstdc++.so.6: version `GLIBCXX_3.4.20' not found (required by /opt/microsoft/msodbcsql/lib64/libmsodbcsql-13.0.so.0.0) 

/opt/microsoft/msodbcsql/lib64/libmsodbcsql-13.0.so.0.0: /lib64/libstdc++.so.6: version `CXXABI_1.3.8' not found (required by /opt/microsoft/msodbcsql/lib64/libmsodbcsql-13.0.so.0.0) 

linux-vdso.so.1 => (0x00007fff22b27000) 
libdl.so.2 => /lib64/libdl.so.2 (0x00007f03de43f000) 
libodbcinst.so.2 => /lib64/libodbcinst.so.2 (0x00007f03de22d000) 
libuuid.so.1 => /lib64/libuuid.so.1 (0x00007f03de027000) 
libgss.so.3 => not found 
libkrb5.so.3 => /lib64/libkrb5.so.3 (0x00007f03ddd42000) 
libcrypto.so.1.0.0 => not found 
libssl.so.1.0.0 => not found 
libstdc++.so.6 => /lib64/libstdc++.so.6 (0x00007f03dda39000) 
....(THE REST ARE FOUND) 

odbcinst.ini odbc.ini

Każda pomoc lub sugestie są mile widziane. Dziękuję Ci!

+0

Twoje zrzuty ekranu są nieczytelne. Nie możesz po prostu skopiować/wkleić komunikaty o błędach do twojego Q, tak jak zrobiłeś to z wyjściem 'ldd'. Powodzenia,. – shellter

+0

Myślę, że pracujesz z niekompatybilną wersją unixODBC dla msodbcsql. Sprawdź, czy polecenie '' 'odbc_config --version''' zwraca oczekiwaną wersję dla msodbcsql. – bull90

Odpowiedz

2

Pamiętam, że miałem ten problem, ale to było ponad rok temu i nie mam już dostępu do tego serwera.

O ile pamiętam, była to niedopasowanie wersji. Jeśli widzisz swoje dane wyjściowe, szukają plików libgss.so.3, libcrypto.so.1.0.0 itp. Może masz zainstalowaną w systemie inną wersję tej biblioteki.

Patrząc na moje uwagi dotyczące instalacji wygląda na to, że naprawiłem problem, tworząc (miękkie) linki "wskazujące" biblioteki, które miałem w moim systemie. I - oczywiście - podałem te linki nazwy, których szukał msodbc. Tak ... trochę "nieuprzejmy", ale zadziałało to dla mnie.

+0

Dziękujemy za potwierdzenie. To jest kierunek, w którym zmierzałem. Szybkie pytanie. Czy mogę utworzyć miękki link w lokalizacji, w której plik binarny szuka pliku? Czy w moim przypadku jest to /lib64/libstdc++.so.6 i przekierowanie do miejsca, gdzie znajduje się aktualna wersja? Dowolna możliwość wykonania przykładowego polecenia ln -s. Dzięki. –

+0

Nie mogłem utworzyć miękkich linków pod/lib lub/usr/lib na tym serwerze (ograniczenia bezpieczeństwa i nie miałem hasła root). Więc ... Stworzyłem te miękkie linki w katalogu pod moim domowym katalogiem ('$ {HOME}/mslib /') i dodałem ten katalog do mojej LD_LIBRARY_PATH ... – mauro

+0

Przykładowa komenda: 'mkdir $ HOME/mslib' oraz następnie 'ln -s /usr/lib/libgss-3.0.0 $ HOME/mslib/libgss-2.8.0' (nie pamiętam numeru wersji - właśnie tutaj zapisałem losowe liczby). Wreszcie umieść swój nowy katalog LIB ** przed ** innymi: 'export LD_LIBRARY_PATH = $ {HOME}/mslib: $ {LD_LIBRARY_PATH}' – mauro