无法从ubuntu上的Qt5连接sqlserver docker映像

时间:2019-05-09 10:14:32

标签: odbc qt5

我正在尝试从Qt5项目建立与SqlServer docker实例的连接,但遇到错误:

Failed to open database!
Error:[unixODBC][Driver Manager]Can't open lib 'SQL SERVER' : file not found QODBC3: Unable to connect

QSqlError error = db.lastError()提供的错误消息。

docker镜像正常运行。

意思是sqlcmd可以通过docker exec -it qt_sql 'bash'进入图像时工作并反馈正确的信息,而且我可以正确登录sql或创建一个新数据库。

此代码返回true:

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

    qDebug() << "ODBC driver valid?" << db.isValid();

QT:5.12.3
操作系统:ubuntu 18.04

库已安装:
libqt5sql5-odbc
mssql-tools
msodbcsql17

我了解如何建立连接的步骤,并且我检查了几乎所有与我有相同问题的解决方案。

这是我的代码:

bool MSSql::connect(){


    QString dsn = "DRIVER={SQL SERVER};SERVER=0.0.0.0,14333;DATABASE=BookMGT;UID=;PWD=;";

    //I tried: localhost, 0.0.0.0, 127.0.0.1 and docker instance's ip 172.17.0.2
    db.setHostName("0.0.0.0");

    db.setDatabaseName(dsn);   

    db.setUserName("SA");

    db.setPassword("<mypassword>");

    if(!db.open ())

        {

            QSqlError error = db.lastError();

            QMessageBox::warning (0, "Warning", QString("Failed to open database!\nError:%1").arg(error.text()));

    return false;

        }

    return true;

}

感谢您的帮助。

0 个答案:

没有答案