Страницы

Поиск по вопросам

среда, 12 июня 2019 г.

Как в Qt 5.9 подключить драйвер MySql?

Добрый день, пытаюсь подключиться к БД но в консоль выдаёт
QSqlDatabase: QMYSQL driver not loaded QSqlDatabase: available drivers: QSQLITE QMYSQL QMYSQL3 QPSQL QPSQL7
в настоечном файле всё прописано
QT += core gui QT += network QT += sql
но ошибка не исчезает не знаю что делать.


Ответ

Согласно официальной инструкции, компиляция и установка драйвера qsqlmysql производится в три шага (при условии, что обозначенные там же в справке зависимости, как то пакет с заголовочными файлами MySql, уже установлены).
Шаг первый.
Открываем терминал и переходим в папку с проектом драйвера:
cd $QTDIR/qtbase/src/plugins/sqldrivers/mysql
Здесь "$QTDIR" - это путь к папке с установленным Qt.
Шаг второй.
qmake "INCLUDEPATH+=/usr/local/include" "LIBS+=-L/usr/local/lib -lmysqlclient_r" mysql.pro
Здесь имеются нюанс: в системе может быть уже установлен Qt из пакетов. Удалять его вовсе не обязательно, но при сборке драйвера следует учитывать данную особенность. Поэтому прописываем полный путь именно к интересующей нас версии qmake. Например:
~/Qt/5.9/gcc_64/bin/qmake "INCLUDEPATH+=/usr/local/include" "LIBS+=-L/usr/local/lib -lmysqlclient_r" mysql.pro
Далее правим путь в "LIBS" в соответствии с реальным местоположением libmysqlclient_r.so. Путь файла библиотеки можно посмотреть в том же Synaptic. В Ubuntu этот файл лежит в "/usr/lib/x86_64-linux-gnu" (возможно, что это справедливо и для Mint). Итого, пример:
~/Qt/5.9/gcc_64/bin/qmake "INCLUDEPATH+=/usr/local/include" "LIBS+=-L/usr/lib/x86_64-linux-gnu -lmysqlclient_r" mysql.pro
Секция "INCLUDEPATH" по умолчанию предлагает путь "/usr/local/include", хотя на самом деле в Ubuntu заголовочные файлы MySql лежат в "/usr/include/mysql". Если указать данный путь, то при компиляции будет выведена ошибка:
fatal error: stdlib.h: Нет такого файла или каталога
Гугление по этой теме подсказало лишь одно верное решение: вообще не указывать "INCLUDEPATH". С чем связана подобная ошибка мне неизвестно, возможно кто-то сможет подсказать ответ.
Тем не менее, результирующая команда для сборки может выглядеть так:
~/Qt/5.9/gcc_64/bin/qmake "LIBS+=-L/usr/lib/x86_64-linux-gnu -lmysqlclient_r" mysql.pro
Шаг третий
Собственно, сборка
make
и установка драйвера
make install

Комментариев нет:

Отправить комментарий