Oracle
 sql >> Datenbank >  >> RDS >> Oracle

Qt-Anwendung stürzt bei Verwendung des ODBC-Treibers ab (macOS)

Schritte zum Aktivieren/Testen von QODBC unter Mac OS ((Seirra) gegenüber MSSQL oder einer anderen ODBC-Datenbank:

Symptom 1:Die Anwendung Qt Run (Debug) stürzt ab (Programm wird unerwartet beendet/abgestürzt). Symptom 2:Qt Creator mit vorgefertigten Qt-Paketen (MaintenanceTool).

Symptom 3:Der freeTDS-Treiber (libtdsodbc.so) fehlt nach der Installation der freeTDS-Pakete.

Symptom 4:Qt wurde vor oder mit fehlendem unixODBC erstellt/konfiguriert.

  1. Laden Sie unixODBC herunter und installieren Sie es (muss vor der Installation von freeTDS erfolgen )(www.unixODBC.org ) / (Treiber) / (unixODBC-2.3.4.tar.gz)

entpacken und entpacken Sie die Pakete.

./configure --prefix=/usr/local/unixODBC (stellen Sie sicher, dass Sie OR sudo schreiben können)

make sudo make istall

  1. Laden Sie freeTDS herunter und installieren Sie es:(http://www.freetds.org/ ) / ( Quick Links) / (Neueste Versionen) / (Stable Release)

entpacken/entpacken Sie das Paket.

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

make

sudo make istall

Hinweis:--with-unixodbc bewirkt, dass der Treiber (libtdsodbc.so) installiert wird.

  1. Leider sollte eventuell das ODBC-Plugin auf Qt neu gebaut werden:

    • Wenn Sie die vorgefertigten Qt-Bibliotheken verwenden, müssen Sie die Quellen mit dem MaintenanceTool ($QTDIR/MaintenanceTool.app) herunterladen

    • Teilen Sie qmake mit, wo die unixODBC-Header-Dateien und gemeinsam genutzten Bibliotheken zu finden sind (hier wird davon ausgegangen, dass unixODBC in /usr/local/unixODBC installiert ist) und führen Sie make:

      aus

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

    mein 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

wenn das richtig geht:erhalten Sie kompilierte QODBC new libs:

cd ../plugins/sqldrivers/

Kopieren Sie die neuen Pakete zum Beispiel nach :

/usr/local/Qt/5.9.1/clang_64/plugins/sqldrivers/
  1. Konfigurieren Sie /etc/local/unixODBC/etc/odbc.ini (möglicherweise benötigen Sie Root-Berechtigungen ändern)

(FreeTDS muss nicht konfiguriert werden):

  • (welcher Port ? welche Version -> Führen Sie /usr/local/freeTDS/bin/tsql -LH 192.168.x.x aus
  • Eintrag in /usr/local/unixODBC/etc/odbc.ini erstellen/ändern

    [MYDSN]

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

    Server = 192.168.x.x

    Port = 51271

    1. im Qt-Projekt:

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

    mydb.setDatabaseName("MYDSN")

    mydb.setUserName("name on Database");

    mydb.setPassword(" password on Database");