Собственно ошибка: SqlDatabase: QMYSQL driver not loaded
Для 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
Кстати, заголовочные файлы клиента 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
sudo apt-key adv —keyserver keys.gnupg.net —recv-keys 8C718D3B5072E1F5
Впринципе всё. Не забудьте пути заменить на свои. 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 отзывов
Алексей
Мар 4, 2017
Андрей
Ноя 8, 2016