sql-server - from - odbc linux
¿No puede abrir lib ''Driver 13 ODBC para SQL Server''? ¿Problemas de vinculación de Sym? (4)
Corriendo:
odbcinst -j
Dio como resultado
unixODBC 2.3.4
DRIVERS............: /etc/odbcinst.ini
SYSTEM DATA SOURCES: /etc/odbc.ini
FILE DATA SOURCES..: /etc/ODBCDataSources
USER DATA SOURCES..: /Users/emehex/.odbc.ini
SQLULEN Size.......: 8
SQLLEN Size........: 8
SQLSETPOSIROW Size.: 8
En lugar de copiar los archivos al directorio /etc/
(no estoy seguro de por qué unixODBC pensó que estaban allí), creé un enlace simbólico a cada archivo:
sudo ln -s /usr/local/etc/odbcinst.ini /etc/odbcinst.ini
sudo ln -s /usr/local/etc/odbc.ini /etc/odbc.ini
Esto solucionó el problema.
Cuando intento conectarme a una base de datos de servidor sql con pyodbc (en mac):
import pyodbc
server = ''####''
database = ''####''
username = ''####@####''
password = ''#####''
driver=''{ODBC Driver 13 for SQL Server}''
pyodbc.connect(''DRIVER=''+driver+'';SERVER=''+server+'';PORT=1443;DATABASE=''+database+'';UID=''+username+'';PWD=''+password)
Obtuve el siguiente error:
Error: (''01000'', "[01000] [unixODBC] [Administrador de controladores] No se puede abrir la biblioteca ''ODBC Driver 13 para SQL Server'': archivo no encontrado (0) (SQLDriverConnect)")
Cuando camino en la ubicación del controlador real:
driver=''/usr/local/lib/libmsodbcsql.13.dylib''
¡Empieza a funcionar!
Mi odbcinst.ini
ve así:
[ODBC Driver 13 for SQL Server]
Description=Microsoft ODBC Driver 13 for SQL Server
Driver=/usr/local/lib/libmsodbcsql.13.dylib
UsageCount=1
¿Cómo puedo obtener mi referencia al driver=''{ODBC Driver 13 for SQL Server}''
para comenzar a trabajar nuevamente?
Inicialmente utilicé esta guía para instalar el controlador. ¿Y estoy usando anaconda en Mac Sierra si eso ayuda?
Debo agregar que si está utilizando un controlador diferente (FreeTDS) y en su cadena de conexión omite mencionarlo, se usará de forma predeterminada en driver=''{ODBC Driver 17 for SQL Server}
o algo así.
Entonces, la solución no es olvidar el controlador, su configuración de base de datos se verá así: ''default'': { ''ENGINE'': ''sql_server.pyodbc'', ''HOST'': ''127.0.0.1'', ''NAME'': ''mydb'', ''PORT'': ''1433'', ''USER'': ''sa'', ''PASSWORD'': ''*****'', ''OPTIONS'':{ ''driver'': ''FreeTDS'', ''host_is_server'': True, } }
En mi caso, tengo que cambiar la cadena del controlador de la base de datos pyodbc
a
driver=''{ODBC Driver 17 for SQL Server}''
en realidad, en mi código python, pyodbc esperaba el controlador ODBC 13
pero, como la versión del controlador ODBC se actualizó (debido a la actualización de ubuntu) a la versión actual del controlador ODBC 17 , se produjo el problema.
En mi caso, tengo un sistema operativo Mac y los siguientes comandos solucionaron el problema:
brew tap microsoft/mssql-release https://github.com/Microsoft/homebrew-mssql-release
brew update
brew install --no-sandbox msodbcsql mssql-tools