sql >> Base de Datos >  >> RDS >> Oracle

La aplicación Qt falla al usar el controlador ODBC (macOS)

Pasos para activar/probar QODBC en Mac OS ((Seirra) hacia MSSQL o cualquier otra base de datos ODBC:

Síntoma 1:la aplicación Qt Run (depuración) se bloquea (el programa finalizó o se bloqueó inesperadamente). Síntoma 2:Qt Creator con paquetes Qt prediseñados (herramienta de mantenimiento).

Síntoma 3:falta el controlador freeTDS (libtdsodbc.so) después de instalar los paquetes freeTDS.

Síntoma 4:Qt compilado/configurado antes o sin unixODBC.

  1. Descargue e instale unixODBC (debe hacerse antes de instalar freeTDS )(www.unixODBC.org ) / (Controladores) / (unixODBC-2.3.4.tar.gz)

descomprimir y descomprimir los paquetes.

./configure --prefix=/usr/local/unixODBC (asegúrese de que puede escribir O sudo)

make sudo make istall

  1. Descargue e instale freeTDS:(http://www.freetds.org/ ) / ( Enlaces rápidos) / (Versiones más recientes) / (Versión estable)

descomprimir/descomprimir el paquete.

./configure --prefix=/usr/local/freeTDS --with-unixodbc=/usr/local/unixODBC/

make

sudo make istall

Nota:--with-unixodbc hará que se instale el controlador (libtdsodbc.so).

  1. Desafortunadamente, posiblemente el complemento ODBC en Qt debería reconstruirse:

    • Si está utilizando las bibliotecas Qt precompiladas, deberá descargar las fuentes mediante MaintenanceTool ($QTDIR/MaintenanceTool.app)

    • Dígale a qmake dónde encontrar los archivos de encabezado de unixODBC y las bibliotecas compartidas (aquí se supone que unixODBC está instalado en /usr/local/unixODBC) y ejecute make:

    cd $QTDIR/qtbase/src/plugins/sqldrivers/odbc

    mi caso:cd /usr/local/Qt/5.9.1/Src/qtbase/src/plugins/sqldrivers/odbc

    qmake "INCLUDEPATH+=/usr/local/unixODBC/include" "LIBS+=-L/usr/local/unixODBC/lib -lodbc"

    make

si eso va correctamente:obtendrá las nuevas librerías QODBC cumplidas:

cd ../plugins/sqldrivers/

copia los nuevos paquetes por ejemplo a :

/usr/local/Qt/5.9.1/clang_64/plugins/sqldrivers/
  1. Configure /etc/local/unixODBC/etc/odbc.ini (es posible que necesite permisos de root modificar)

(No es necesario configurar freeTDS):

  • (¿Qué puerto? ¿Qué versión -> Ejecutar /usr/local/freeTDS/bin/tsql -LH 192.168.x.x
  • Crear/Modificar entrada en /usr/local/unixODBC/etc/odbc.ini

    [MYDSN]

    Driver = /usr/local/freeTDS/lib/libtdsodbc.0.so

    Server = 192.168.x.x

    Port = 51271

    1. en proyecto Qt:

    QSqlDatabase mydb = QSqlDatabase::addDatabase("QODBC");

    mydb.setDatabaseName("MYDSN")

    mydb.setUserName("name on Database");

    mydb.setPassword(" password on Database");