Qt

Ubuntu Qt 5.6 mysql 5.6 драйвер не найден, но доступен (driver not loaded)

Собственно ошибка: SqlDatabase: QMYSQL driver not loaded

[tip]Обновил пост для Qt 5.14 и MySQL 8.0[/tip]

Для Qt 5 и выше обычно mysql драйвер уже идёт в стандартной поставке.
Для уточнения переходим в каталог установки Qt а далее в папку с драйверами, у меня это /opt/Qt/Qt5.14.0/5.14.0/gcc_64/plugins/sqldrivers
по идее там должен быть libqsqlmysql.so

Если он там есть,  может быть, что не найдена какая-либо зависимость для libqsqlmysql.so
проверять так:

ldd libqsqlmysql.so

скорее всего будет не найдена (not found) зависимость libmysqlclient_r.so.21

Можно, конечно, только его и поставить, вот так:
[32]

[64]

Проверяем:

ldd libqsqlmysql.so
Может быть так же не доступны быть:
libssl.so.10 и libcrypto.so.10
Ставить их так:
sudo apt-get update
sudo apt-get install libssl1.0.0 libssl-dev
cd /lib/x86_64-linux-gnu
sudo ln -s libssl.so.1.0.0 libssl.so.10
sudo ln -s libcrypto.so.1.0.0 libcrypto.so.10

Впринципе, можно на этом остановиться,
но я решил использовать более новый, поэтому придётся пересобрать.

У меня стоит MySQL версии 8.0 (узнать можно в терминале командой mysql —version)
поэтому потребуется драйвер собрать из исходников.
Запускаем консольку, вбиваем:

export QTDIR=/opt/Qt/Qt5.14.0/5.14.0/Src/qtbase
cd $QTDIR/src/plugins/sqldrivers
/opt/Qt/Qt5.14.0/5.14.0/gcc_64/bin/qmake   -- MYSQL_INCDIR=/usr/include/mysql   MYSQL_LIBDIR=/usr/lib/mysql
make sub-mysql
make install

[tip]Важно: что бы было можно пересобрать из исходников, он должны быть установлены! Если при установке Qt не отметили, то доустановить можно через MaintenanceTool, который в корне папки с Qt. Устанавливаете именно той версии, которая используется в комплекте QtCreator`а [/tip]

Кстати, заголовочные файлы клиента mysql так же должны быть установлены!
Как это делать в вашем дистрибутиве должно легко гуглиться.

Установка MySQL 8.0 На Ubuntu 18.04:

wget -c https://dev.mysql.com/get/mysql-apt-config_0.8.11-1_all.deb
sudo dpkg -i mysql-apt-config_0.8.11-1_all.deb  #Выбираем 8 версию
sudo apt-get update
sudo apt-get install mysql-server mysql-client mysql-connector-odbc libmysqlclient-dev
[tip]Если при update будет ругаться, что ключ истёк, то обновить:
sudo apt-key adv —keyserver keys.gnupg.net —recv-keys 8C718D3B5072E1F5
[/tip]

Впринципе всё. Не забудьте пути заменить на свои. Qt у меня установлен в папке /opt/Qt/Qt5.14.0/.

Немного как подключится к базе MySQL из Qt
В проекте в файл *.pro   дабавить

QT+= sql

Ну а  потом в  классе прописать

#include <QSqlDatabase>
#include <QSqlError>
#include <QDebug>

Ну и подключаемся:

QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL", "mydb");
db.setHostName("localhost");
db.setDatabaseName("WORKYS");
db.setUserName("root");
db.setPassword("12345");
bool ok = db.open();
qDebug()<< ((ok)? "DATABASE OPENED!!!!" : "DATABASE NOT OPENED" + db.lastError().text() );

Вот как то так =)

Related posts

QML Сделать задержку перед началом анимации

QtCreator не открывает диалог выбора файлов, проектов, не открывает проект

Сборка Qt 6.8 (Dev) из исходников в Docker контейнере (Linux)

2 комментария

Алексей 4 марта 2017 - 0:22
Спасибо! Действительно эта последовательность действий работает ! :) , а остальные нет :(
Андрей 8 ноября 2016 - 21:30
Спасибо большое. Только ваша статья и выручила!, весь интернет перерыл нечего не помогало.
Add Comment