我正在尝试从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;
}
感谢您的帮助。