Oracle
 sql >> Base de données >  >> RDS >> Oracle

L'application Qt plante lors de l'utilisation du pilote ODBC (macOS)

Étapes pour activer/tester QODBC sur Mac OS ((Seirra) vers MSSQL ou toute autre base de données ODBC :

Symptôme 1 :L'application Qt Run (Debug) plante (le programme s'est terminé/planté de manière inattendue). Symptôme 2 :Qt Creator avec des packages Qt pré-construits (MaintenanceTool).

Symptôme 3 :le pilote freeTDS (libtdsodbc.so) est manquant après l'installation des packages freeTDS.

Symptôme 4 :Qt construit/configuré avant ou avec unixODBC manquant.

  1. Téléchargez et installez unixODBC (doit être fait avant d'installer freeTDS )(www.unixODBC.org ) / (Pilotes) / (unixODBC-2.3.4.tar.gz)

décompressez et décompressez les packages.

./configure --prefix=/usr/local/unixODBC (assurez-vous que vous pouvez écrire OR sudo)

make sudo make istall

  1. Téléchargez et installez freeTDS :(http://www.freetds.org/ ) / ( Liens rapides) / (Dernières versions) / (Version stable)

décompressez/décompressez le package.

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

make

sudo make istall

Remarque :--with-unixodbc entraînera l'installation du pilote (libtdsodbc.so).

  1. Malheureusement, il est possible que le plugin ODBC sur Qt doive être reconstruit :

    • Si vous utilisez les bibliothèques Qt prédéfinies, vous devrez télécharger les sources à l'aide de MaintenanceTool ($QTDIR/MaintenanceTool.app)

    • Indiquez à qmake où trouver les fichiers d'en-tête unixODBC et les bibliothèques partagées (ici, on suppose qu'unixODBC est installé dans /usr/local/unixODBC) et exécutez make :

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

    mon cas :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 cela se passe correctement :vous obtiendrez les nouvelles bibliothèques QODBC conformes :

cd ../plugins/sqldrivers/

copier les nouveaux packages par exemple vers :

/usr/local/Qt/5.9.1/clang_64/plugins/sqldrivers/
  1. Configurez /etc/local/unixODBC/etc/odbc.ini (vous aurez peut-être besoin des autorisations root modifier)

(Pas besoin de configurer freeTDS) :

  • (quel port ? quelle version -> Exécuter/usr/local/freeTDS/bin/tsql -LH 192.168.x.x
  • Créer/Modifier une entrée dans /usr/local/unixODBC/etc/odbc.ini

    [MYDSN]

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

    Server = 192.168.x.x

    Port = 51271

    1. dans le projet Qt :

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

    mydb.setDatabaseName("MYDSN")

    mydb.setUserName("name on Database");

    mydb.setPassword(" password on Database");