Я пытаюсь создать соединение с экземпляром докера SqlServer из проекта Qt5, но я столкнулся с ошибкой:
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()
.
Образ докера, работающий нормально.
означает, что 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
libs установил:
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;
}
Спасибо за вашу помощь.