Qt 5 - драйвер QMSQL

Тип статьи:
Авторская

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

Для Qt 5.6

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

Если он там есть, может быть, что не найдена какая-либо зависимость для libqsqlmysql.so
проверять так: ldd libqsqlmysql.so
скорее всего будет не найдена (not found) зависимость libmysqlclient_r.so.16

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

wget http://launchpadlibrarian.net/75949497/libmysqlclient16_5.1.58-1ubuntu1_i386.deb
sudo dpkg -i ./libmysqlclient16_5.1.58-1ubuntu1_i386.deb
[64]
wget http://launchpadlibrarian.net/94808408/libmysqlclient16_5.1.58-1ubuntu5_amd64.deb
sudo dpkg -i ./libmysqlclient16_5.1.58-1ubuntu5_amd64.deb
Проверяем:
ldd libqsqlmysql.so
Может быть так же не доступны быть:

libssl.so.10 и libcrypto.so.10
Ставить их так:

sudo apt-get update
sudo apt-get install libssl1.0.0 libssl-devcd /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 версии 5.5 (узнать можно в терминале командой mysql —version)
то потребуется драйвер собрать из исходников.
Запускаем консоль, вбиваем (возможно путь к исходникам qtbase у вас другой):

export QTDIR=/opt/Qt/Qt5.5.0/5.5/Src/qtbase
cd $QTDIR/src/plugins/sqldrivers/mysql/opt/Qt/Qt5.5.0/5.5/gcc_64/bin/qmake
make
make install

Впринципе всё. Не забудьте пути заменить на свои. Qt у меня установлен в папке /opt/Qt/Qt5.5.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() );
sudo apt-get install qtbase5-private-dev
sudo apt-get install libssl1.0.0-dbg
sudo apt-get install libssl1.0.0 libssl-dev  
sudo ln -s /lib/x86_64-linux-gnu/libssl.so.1.0.0 /usr/lib/libssl.so.10
sudo ln -s /lib/x86_64-linux-gnu/libcrypto.so.1.0.0 /usr/lib/libcrypto.so.10

Если совсем тяжёлый случай то смотри источники, вся информация взята от туда.

ставил так же qt5keychain-dev и qt5-qmake


Источник:

pavelk.ru/ubuntu-qtcreator-qmysql-drajver

travis.com.ua/2014/08/qt-5-31-drayver-qmysql-hot-i-viditsya-no-ne-gruzitsya/

www.cyberforum.ru/qt/thread1705623.html

www.aydinyakar.com/2015/02/qt5-mysql-56-ve-ubuntu-1404-qmysql.html

askubuntu.com/questions/339364/libssl-so-10-cannot-open-shared-object-file-no-such-file-or-directory

ru.stackoverflow.com/questions/532066/qmysql-%D0%B2-qt-5-6-ubuntu-x64/532130#532130

commonworkspace.ru/article.php?id=32

606

Комментарии

Нет комментариев. Ваш будет первым!