GNU/Linux >> LINUX-Kenntnisse >  >> Linux

PyODBC:Der Treiber kann nicht geöffnet werden, selbst wenn er vorhanden ist

Ich hatte auch das gleiche Problem auf Ubuntu 14, nachdem ich das Microsoft-Tutorial für den SQL Server Linux ODBC-Treiber befolgt hatte.

Die Datei existiert und nach dem Ausführen eines ldd zeigte es, dass Abhängigkeiten fehlten:

/opt/microsoft/msodbcsql/lib64/libmsodbcsql-13.0.so.0.0:/usr/lib/x86_64-linux-gnu/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: /usr/lib/x86_64-linux-gnu/libstdc++.so.6: version CXXABI_1.3.8' nicht gefunden (erforderlich für

Nachdem ich eine Weile gesucht hatte, fand ich es, weil Ubuntus Repo kein GLIBCXX in Version 3.4.20 hatte, es war bei 3.4.19.

Ich habe dann ein Repo zu Ubuntu hinzugefügt, es aktualisiert und es gezwungen, libstdc++6

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

Problem gelöst, getestet mit isql:

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

Danach habe ich versucht, mit pdo_odbc (PHP) zu testen, es gab mir dann den gleichen Fehler, dass der Treiber nicht gefunden wurde. Um dies zu lösen, musste ich einen symbolischen Link erstellen, um libodbcinst.so.2 zu beheben :

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

Ich habe hier eine Antwort gefunden, die für mich funktioniert. Dies ist für Python 2.7 (funktioniert also möglicherweise nicht für diejenigen, die nach einer Lösung für Python 3.x suchen).

Die vorgeschlagene Lösung besteht darin, libgcc zu aktualisieren:4.8.5-2 --> 5.2.0-0

Verwenden Sie zum Aktualisieren von libgcc diesen Befehl

conda update libgcc

Ich hatte das gleiche Problem 'Datei nicht gefunden (0) (SQLDriverConnect)' auf MAC OS mit dem folgenden Code

cnxn =pyodbc.connect('DRIVER={ODBC-Treiber 13 für SQL Server};SERVER=myServerIP,1433;DATABASE=myDBName;UID=sa;PWD=dbPassword')

Nachdem ich zwei Tage lang gegoogelt habe, kann ich das Problem nicht beheben, auch wenn ich die freetds.conf, odbcinst.ini und odbc.ini ändere

Schließlich habe ich die Lösung gefunden, indem ich DRIVER ersetzt habe Wert

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

Meine Entwicklungsumgebung

  • MAC OS El Capitan
  • Python 3.6.1 in Anaconda

Linux
  1. Linux-Äquivalent zum Open-Befehl von Mac OS X

  2. Wie kann ich das 'Backend' in Matplotlib in Python einstellen?

  3. Die Node.js-App kann nicht auf Port 80 ausgeführt werden, obwohl kein anderer Prozess den Port blockiert

  4. Kann keine Ordner in Linux nerdtree vim öffnen

  5. Warum kann ich im Terminal nicht scrollen?

WAZUH Die Open-Source-Sicherheitsplattform

Beheben Sie den Fehler, dass der Befehl hwmatch auf Grub nicht gefunden werden kann

Warum ist das schreckliche 'rm -rf /' überhaupt erlaubt?

Wie kann ich die Länge der Annahmewarteschlange überwachen?

Kann ich die SID einer Oracle-Datenbank ändern?

Wie kann ich mit sudo prüfen, ob eine Datei existiert?