Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

Aplicativo Qt travando ao usar o driver ODBC (macOS)

Etapas para ativar/testar QODBC no Mac OS ((Seirra) para MSSQL ou qualquer outro banco de dados ODBC:


Sintoma 1:O aplicativo Qt Run (Debug) trava (o programa terminou/travou inesperadamente). Sintoma 2:Qt Creator com pacotes Qt pré-construídos (MaintenanceTool).

Sintoma 3:o driver do freeTDS (libtdsodbc.so) está ausente após a instalação dos pacotes do freeTDS.

Sintoma 4:Qt construído/configurado antes ou com unixODBC ausente.
  1. Faça o download e instale o unixODBC (deve ser feito antes de instalar o freeTDS )(www.unixODBC.org ) / (Drivers) / (unixODBC-2.3.4.tar.gz)

descompacte e descompacte os pacotes.

./configure --prefix=/usr/local/unixODBC (certifique-se de que você pode escrever OR sudo)

make sudo make istall
  1. Baixe e instale o freeTDS:(http://www.freetds.org/ ) / ( Links rápidos) / (Versões mais recentes) / (Versão estável)

descompacte/descompacte o pacote.

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

sudo make istall

Nota:--with-unixodbc fará com que o driver (libtdsodbc.so) seja instalado.

  1. Infelizmente, possivelmente o plugin ODBC no Qt deve ser reconstruído:

    • Se você estiver usando as bibliotecas Qt pré-construídas, você precisará baixar fontes usando MaintenanceTool ($QTDIR/MaintenanceTool.app)

    • Diga ao qmake onde encontrar os arquivos de cabeçalho unixODBC e as bibliotecas compartilhadas (aqui assume-se que o unixODBC está instalado em /usr/local/unixODBC) e execute make:

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

    meu 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 isso for correto:você receberá novas bibliotecas QODBC:
cd ../plugins/sqldrivers/

copie os novos pacotes, por exemplo, para:
/usr/local/Qt/5.9.1/clang_64/plugins/sqldrivers/
  1. Configure /etc/local/unixODBC/etc/odbc.ini (você pode precisar de permissões de root modificar)

(Não há necessidade de configurar o freeTDS):
  • (qual porta? qual versão -> Execute/usr/local/freeTDS/bin/tsql -LH 192.168.x.x

  • Criar/modificar entrada em /usr/local/unixODBC/etc/odbc.ini

    [MYDSN]

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

    Server = 192.168.x.x

    Port = 51271
    1. no projeto Qt:

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

    mydb.setDatabaseName("MYDSN")

    mydb.setUserName("name on Database");

    mydb.setPassword(" password on Database");