GNU/Linux >> Tutoriales Linux >  >> Linux

PyODBC:no puede abrir el controlador incluso si existe

También tuve el mismo problema en Ubuntu 14 después de seguir el tutorial de Microsoft para el controlador ODBC de SQL Server Linux.

El archivo existe y después de ejecutar un ldd, mostró que faltaban dependencias:

/opt/microsoft/msodbcsql/lib64/libmsodbcsql-13.0.so.0.0:/usr/lib/x86_64-linux-gnu/libstdc++.so.6:versión 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' no encontrado (requerido por

después de buscar por un tiempo encontré que el repositorio de Ubuntu no tenía GLIBCXX en la versión 3.4.20, estaba en la 3.4.19.

Luego agregué un repositorio a Ubuntu, lo actualicé y lo obligué a actualizar 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

Problema resuelto, probado con isql:

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

Después de eso, intenté probar usando pdo_odbc (PHP), luego me dio el mismo error de controlador no encontrado. Para resolver esto, tuve que crear un enlace simbólico para arreglar libodbcinst.so.2 :

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

Encontré una respuesta que me funciona aquí. Esto es para python 2.7 (por lo que puede no funcionar para aquellos que buscan una solución para python 3.x).

La solución sugerida es actualizar libgcc:4.8.5-2 --> 5.2.0-0

Para actualizar libgcc, use este comando

conda update libgcc

Tuve el mismo problema 'archivo no encontrado (0) (SQLDriverConnect)' en MAC OS con el siguiente código

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

después de buscar en Google durante dos días, no puedo solucionar el problema ni siquiera modificar freetds.conf, odbcinst.ini y odbc.ini

finalmente, encontré la solución reemplazando DRIVER valor

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

Mi entorno de desarrollo

  • MAC OS El Capitán
  • Python 3.6.1 en Anaconda

Linux
  1. ¿Cómo puedo configurar el 'backend' en matplotlib en Python?

  2. Comprobar si existe una pantalla con el nombre especificado

  3. ¿Cómo puedo comprobar si existe un directorio?

  4. La aplicación Node.js no se puede ejecutar en el puerto 80 aunque no haya otro proceso que bloquee el puerto

  5. dlsym devuelve NULL, aunque el símbolo existe

3 cosas útiles que puedes hacer con la herramienta IP en Linux

WAZUH La plataforma de seguridad de código abierto

Solucione el error que no puede encontrar el comando hwmatch en Grub

Equivalente en Linux del comando de apertura de Mac OS X

No puedo abrir carpetas en Linux nerdtree vim

¿No puede encontrar .so en el mismo directorio que el ejecutable?