sql >> Databasteknik >  >> RDS >> Oracle

Qt-applikation kraschar när du använder ODBC-drivrutin (macOS)

Steg för att aktivera/testa QODBC på Mac OS ((Seirra) mot MSSQL eller någon annan ODBC DB:

Symptom 1:Qt Run (Debug)-applikation kraschar (programmet avslutades oväntat/kraschade). Symptom 2:Qt Creator med förbyggda Qt-paket (MaintenanceTool).

Symptom 3:freeTDS-drivrutinen (libtdsodbc.so) saknas efter installation av freeTDS-paket.

Symptom 4:Qt byggd/konfigurerad före eller med saknad unixODBC.

  1. Ladda ner och installera unixODBC (måste göras innan du installerar freeTDS )(www.unixODBC.org ) / (Drivrutiner) / (unixODBC-2.3.4.tar.gz)

packa upp och ta bort paketen.

./configure --prefix=/usr/local/unixODBC (se till att du kan skriva ELLER sudo)

make sudo make istall

  1. Ladda ner och installera freeTDS:(http://www.freetds.org/ ) / ( Snabblänkar) / (Senaste versioner) / (Stabil utgåva)

untar/packa upp paketet.

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

make

sudo make istall

Obs:--with-unixodbc kommer att få drivrutinen (libtdsodbc.so) att installeras.

  1. Tyvärr borde möjligen ODBC-pluginen på Qt byggas om:

    • Om du använder de förbyggda Qt-biblioteken måste du ladda ner källor med MaintenanceTool ($QTDIR/MaintenanceTool.app)

    • Berätta för qmake var du hittar unixODBC-huvudfilerna och delade biblioteken (här antas det att unixODBC är installerat i /usr/local/unixODBC) och kör make:

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

    mitt fall: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

om det går rätt:du kommer att få uppfyllda QODBC new libs:

cd ../plugins/sqldrivers/

kopiera de nya paketen till t.ex. :

/usr/local/Qt/5.9.1/clang_64/plugins/sqldrivers/
  1. Konfigurera /etc/local/unixODBC/etc/odbc.ini (du kan behöva rootbehörigheter att ändra)

(Inget behov av att konfigurera freeTDS):

  • (vilken port? vilken version -> Kör/usr/local/freeTDS/bin/tsql -LH 192.168.x.x
  • Skapa/Ändra post i /usr/local/unixODBC/etc/odbc.ini

    [MYDSN]

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

    Server = 192.168.x.x

    Port = 51271

    1. i Qt-projektet:

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

    mydb.setDatabaseName("MYDSN")

    mydb.setUserName("name on Database");

    mydb.setPassword(" password on Database");




  1. Hur man får MySQL-status i en fråga

  2. Django:Använder anpassade rå SQL-inlägg med executemany och MySQL

  3. mySQL Trigger fungerar efter konsolinfogning, men inte efter skriptinsättning

  4. Lyssna på avsnitt 2 av Microsoft Access Podcast