Собственно ошибка: 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() );
Вот как то так =)
2 комментария
Спасибо! Действительно эта последовательность действий работает ! 🙂 , а остальные нет 🙁
Спасибо большое.
Только ваша статья и выручила!, весь интернет перерыл нечего не помогало.