GNU/Linux >> Znalost Linux >  >> Linux

PyODBC:nelze otevřít ovladač, i když existuje

Také jsem měl stejný problém na Ubuntu 14 poté, co jsem se řídil tutoriálem společnosti Microsoft pro ovladač SQL Server Linux ODBC Driver.

Soubor existuje a po spuštění ldd se ukázalo, že chybí závislosti:

/opt/microsoft/msodbcsql/lib64/libmsodbcsql-13.0.so.0.0:/usr/lib/x86_64-linux-gnu/libstdc++.so.6:verze 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: /usr/lib/x86_64-linux-gnu/libstdc++.so.6: version CXXABI_1.3.8' nenalezeno (vyžadováno

po chvíli hledání jsem to našel, protože repo Ubuntu nemělo GLIBCXX ve verzi 3.4.20, bylo to 3.4.19.

Pak jsem přidal repo do Ubuntu, aktualizoval ho a donutil ho upgradovat libstdc++6

sudo add-apt-repository ppa:ubuntu-toolchain-r/test 
sudo apt-get update
sudo apt-get upgrade
sudo apt-get install libstdc++6

Problém vyřešen, testováno pomocí isql:

+---------------------------------------+
| Connected!                            |
|                                       |
| sql-statement                         |
| help [tablename]                      |
| quit                                  |
|                                       |
+---------------------------------------+
SQL> 

Poté jsem zkusil otestovat pomocí pdo_odbc (PHP), pak mi to poskytlo stejnou chybu ovladače nenalezen. Abych to vyřešil, musel jsem vytvořit symbolický odkaz na opravu libodbcinst.so.2 :

sudo ln -s /usr/lib64/libodbcinst.so.2 /lib/x86_64-linux-gnu/libodbcinst.so.2

Našel jsem zde odpověď, která mi vyhovuje. Toto je pro python 2.7 (takže nemusí fungovat pro ty, kteří hledají řešení pro python 3.x).

Navrhovaným řešením je aktualizace libgcc:4.8.5-2 --> 5.2.0-0

Pro aktualizaci libgcc použijte tento příkaz

conda update libgcc

Měl jsem stejný problém 'file not found (0) (SQLDriverConnect)' na MAC OS s následujícím kódem

cnxn =pyodbc.connect('DRIVER={ODBC Driver 13 for SQL Server};SERVER=myServerIP,1433;DATABASE=myDBName;UID=sa;PWD=dbPassword')

po dvou dnech googlování nemohu problém opravit ani upravit soubory freetds.conf, odbcinst.ini a odbc.ini

nakonec jsem našel řešení nahrazením DRIVER hodnotu

cnxn =pyodbc.connect('OVLADAČ={/usr/local/lib/libmsodbcsql.13.dylib};SERVER=myServerIP,1433;DATABASE=myDBName;UID=sa;PWD=dbPassword')

Moje vývojářské prostředí

  • MAC OS El Capitan
  • python 3.6.1 v Anaconda

Linux
  1. Aplikaci Node.js nelze spustit na portu 80, i když port neblokuje žádný jiný proces

  2. Nelze otevřít složky v Linuxu nerdtree vim

  3. Proč nemohu rolovat v terminálu?

  1. 3 užitečné věci, které můžete dělat s nástrojem IP v Linuxu

  2. Jak mohu použít sudo ke kontrole, zda soubor existuje?

  3. Jak mohu otevřít soubor s čísly řádků zobrazenými z příkazového řádku v 'vi'?

  1. Lze ovladač Nouveau Xorg použít pro vícehlavou pracovní stanici?

  2. Linux ekvivalent příkazu otevřít Mac OS X

  3. Jak mohu nastavit 'backend' v matplotlib v Pythonu?