QSqlDatabase: драйвер QMYSQL не загружен Ubuntu 19.04 и Qt5.12 - PullRequest
0 голосов
/ 17 октября 2019

Я работаю с Ubuntu 19.04 и Qt5.12 и пытаюсь написать небольшой графический интерфейс, который подключается к базе данных SQL Server, но, что бы я ни пытался, я постоянно получаю следующую ошибку:

QSqlDatabase: QMYSQL driver not loaded

QSqlDatabase: available drivers: QSQLITE QMYSQL QMYSQL3 QPSQL QPSQL7

Я провел много исследований по этой теме, и из этого источника кажется, что это проблема библиотеки,чтобы быть конкретным libqsqlmysql.so, но он четко установлен. Кроме того, в том же посте предлагается установить следующую библиотеку libmysqlclient_r. Это последнее, чего у меня не было, но после поиска решения я наткнулся на этот пост , в котором предлагается создать символическую ссылку следующим образом:

sudo ln -s /usr/lib/x86_64-linux-gnu/libmysqlclient.so /usr/lib/x86_64-linux-gnu/libmysqlclient_r.so

Но это также не имело никакого эффекта.

На изображении ниже показаны скриншоты библиотек, которые я могу подтвердить: 1) libqsqlmysql.so 2) libmysqlclient.so и 3) я создаю символическую ссылку на libmysqlclient_r используя пост, о котором я упоминал выше.

mysql

В случае, если это полезно, вот мой .pro файл:

QT  += core gui
QT  += sql

greaterThan(QT_MAJOR_VERSION, 4): QT += widgets

TARGET = GeneralDBModuleEntry
TEMPLATE = app
DEFINES += QT_DEPRECATED_WARNINGS
CONFIG += c++11
QMAKE_CXXFLAGS += -std=gnu++11

SOURCES += \
        main.cpp \
        mainwindow.cpp
HEADERS += \
        mainwindow.h
FORMS += \
        mainwindow.ui

INCLUDEPATH+=/usr/include/mysql
LIBS += -L/home/emanuele/Qt5.11.2/5.11.2/gcc_64/plugins/sqldrivers

И небольшой фрагмент кодакод, который я использую:

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    model = new QSqlQueryModel;
    connectToSql();
}

void MainWindow::connectToSql()
{
    db = QSqlDatabase::addDatabase("QMYSQL", "myDbTest");
    db.setUserName("root");
    db.setDatabaseName("TestDB");
    db.setPassword("mypassword");
    db.setHostName("localhost");
    db.setPort(3306);
    if(db.open())
    {
        std::cout<<"Success Db is open"<<std::endl;
    }
    else
    {
        QMessageBox::critical(this, "Error", model->lastError().text());
    }
}

MainWindow::~MainWindow()
{
    delete ui;
    delete model;
    delete qry;
}

Если есть что-то, чего мне не хватает, пожалуйста, укажите правильное направление, чтобы решить эту проблему.

...