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

580
09 июня 2017, 11:32

Добрый день, пытаюсь подключиться к БД но в консоль выдаёт

QSqlDatabase: QMYSQL driver not loaded QSqlDatabase: available drivers: QSQLITE QMYSQL QMYSQL3 QPSQL QPSQL7

в настоечном файле всё прописано

QT += core gui

QT += network

QT += sql

но ошибка не исчезает не знаю что делать.

Answer 1

Согласно официальной инструкции, компиляция и установка драйвера 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

READ ALSO
Отследить, что и где обращается к элементу

Отследить, что и где обращается к элементу

Как можно отследить, какая функция обращается и что делает с каким-то элементом? У меня в проекте возник баг, суть которого заключается в том,...

257
Нужно найти библиотеку для Datepicker'a

Нужно найти библиотеку для Datepicker'a

На этой странице размещена секция с 2 кнопками "Сегодня" и "завтра", по центру скролл с выбором дат и слева датепикерНе могу найти данную библиотеку,...

228
Координаты по data атрибутам. Яндекс карты

Координаты по data атрибутам. Яндекс карты

Здравствуйте! Есть несколько блоков с дата атрибутами:

376
нужна помощь с SASS

нужна помощь с SASS

Ребят, перешел на SASS сегодня, и появилось несколько проблем

373