GNU/Linux >> Tutoriels Linux >  >> Linux

PyODBC :impossible d'ouvrir le pilote même s'il existe

J'ai également eu le même problème sur Ubuntu 14 après avoir suivi le tutoriel Microsoft pour SQL Server Linux ODBC Driver.

Le fichier existe et après avoir exécuté un ldd, il a montré qu'il manquait des dépendances :

/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' introuvable (requis par

après avoir cherché pendant un moment, j'ai trouvé que c'était parce que le repo d'Ubuntu n'avait pas GLIBCXX sur la version 3.4.20, c'était à 3.4.19.

J'ai ensuite ajouté un référentiel à Ubuntu, l'ai mis à jour et l'ai forcé à mettre à niveau 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ème résolu, testé avec isql :

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

Après cela, j'ai essayé de tester en utilisant pdo_odbc (PHP), cela m'a ensuite donné la même erreur de pilote introuvable. Pour résoudre ce problème, j'ai dû créer un lien symbolique pour corriger libodbcinst.so.2 :

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

J'ai trouvé une réponse qui fonctionne pour moi ici. Ceci est pour python 2.7 (donc peut ne pas fonctionner pour ceux qui recherchent une solution pour python 3.x).

La solution suggérée est de mettre à jour libgcc :4.8.5-2 --> 5.2.0-0

Pour mettre à jour libgcc, utilisez cette commande

conda update libgcc

J'ai eu le même problème 'file not found (0) (SQLDriverConnect)' sur MAC OS avec le code suivant

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

après avoir cherché sur Google pendant deux jours, je ne peux pas résoudre le problème, même modifier les fichiers freetds.conf, odbcinst.ini et odbc.ini

enfin, j'ai trouvé la solution en remplaçant DRIVER valeur

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

Mon environnement de développement

  • MAC OS El Capitan
  • python 3.6.1 dans Anaconda

Linux
  1. 3 choses utiles que vous pouvez faire avec l'outil IP sous Linux

  2. Équivalent Linux de la commande open de Mac OS X

  3. Comment puis-je définir le 'backend' dans matplotlib en Python?

  4. L'application Node.js ne peut pas s'exécuter sur le port 80 même si aucun autre processus ne bloque le port

  5. dlsym renvoie NULL, même si le symbole existe

WAZUH La plateforme de sécurité open source

Corrigez l'erreur impossible de trouver la commande hwmatch sur Grub

Impossible d'ouvrir des dossiers sous Linux nerdtree vim

Ouvrir un fichier donné par le résultat d'une commande dans vim

Comment puis-je surveiller la longueur de la file d'attente d'acceptation ?

Vous ne trouvez pas .so dans le même répertoire que l'exécutable ?