Oracle
 sql >> Database >  >> RDS >> Oracle

L'applicazione Qt si arresta in modo anomalo quando si utilizza il driver ODBC (macOS)

Passaggi per attivare/testare QODBC su Mac OS ((Seirra) verso MSSQL o qualsiasi altro DB ODBC:

Sintomo 1:l'applicazione Qt Run (Debug) si arresta in modo anomalo (programma terminato/bloccato in modo imprevisto). Sintomo 2:Qt Creator con pacchetti Qt predefiniti (MaintenanceTool).

Sintomo 3:il driver freeTDS (libtdsodbc.so) è mancante dopo l'installazione dei pacchetti freeTDS.

Sintomo 4:Qt compilato/configurato prima o con unixODBC mancante.

  1. Scarica e installa unixODBC (deve essere eseguito prima di installare freeTDS )(www.unixODBC.org ) / (Driver) / (unixODBC-2.3.4.tar.gz)

decomprimi e decomprimi i pacchetti.

./configure --prefix=/usr/local/unixODBC (assicurati di poter scrivere OR sudo)

make sudo make istall

  1. Scarica e installa freeTDS:(http://www.freetds.org/ ) / ( Collegamenti rapidi) / (Ultime versioni) / (Rilascio stabile)

decomprimi/decomprimi il pacchetto.

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

make

sudo make istall

Nota:--with-unixodbc causerà l'installazione del driver (libtdsodbc.so).

  1. Sfortunatamente, forse il plug-in ODBC su Qt dovrebbe essere ricostruito:

    • Se stai utilizzando le librerie Qt predefinite, dovrai scaricare i sorgenti utilizzando MaintenanceTool ($QTDIR/MaintenanceTool.app)

    • Di' a qmake dove trovare i file header unixODBC e le librerie condivise (qui si presume che unixODBC sia installato in /usr/local/unixODBC) ed esegui make:

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

    il mio 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

se ciò va correttamente:otterrai nuove librerie QODBC rispettate:

cd ../plugins/sqldrivers/

copia i nuovi pacchetti ad esempio in :

/usr/local/Qt/5.9.1/clang_64/plugins/sqldrivers/
  1. Configura /etc/local/unixODBC/etc/odbc.ini (potresti aver bisogno di permessi di root modificare)

(Non è necessario configurare freeTDS):

  • (quale porta? quale versione -> Esegui/usr/local/freeTDS/bin/tsql -LH 192.168.x.x
  • Crea/Modifica voce in /usr/local/unixODBC/etc/odbc.ini

    [MYDSN]

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

    Server = 192.168.x.x

    Port = 51271

    1. nel progetto Qt:

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

    mydb.setDatabaseName("MYDSN")

    mydb.setUserName("name on Database");

    mydb.setPassword(" password on Database");