Ruslan Polupan
Ruslan Polupan17 ноября 2019 г. 9:07

Сборка драйвера QMYSQL (MariaDB) Windows 10 x64 QT 5.13.0 Mingw73_64

Доброго времени суток!

Установлено:
Windows 10 x64
Qt 5.13.0 установлен в с:\Qt\
Сервер БД работает на ОС Linux.
mysql Ver 15.1 Distrib 10.3.18-MariaDB, for Linux (x86_64) using readline 5.1


Качем 64 битную версию MariaDB потому что Mingw 64-битный.
mariadb-10.4.10-winx64.msi
При установке отключаем компоненты сервера.

Дабы потом не мучатся с путями в Program Files я ставлю в выбранную мной папку:
D:\MariaDB\
Заходим в Папку D:\MariaDB\lib\ и делаем копии файлов
libmariadb.dll даем новое имя libmysql.dll
libmariadb.lib даем новое имя libmysql.lib
mariadbclient.lib даем новое имя mysqlclient.lib

Добавляем в переменную среды PATH следующие пути:
C:\Qt\5.13.0\mingw73_64\bin
C:\Qt\Tools\mingw730_64\bin
D:\MariaDB\lib
Переходим в папку C:\Qt\5.13.0\Src\qtbase\src\plugins\sqldrivers
Выполняем следующее:

qmake -- MYSQL_INCDIR=D:/MariaDB/include/mysql MYSQL_LIBDIR=D:/MariaDB/lib

Получаем

Qt Sql Drivers:
  DB2 (IBM) .............................. no
  InterBase .............................. no
  MySql .................................. yes
  OCI (Oracle) ........................... no
  ODBC ................................... yes
  PostgreSQL ............................. no
  SQLite2 ................................ no
  SQLite ................................. yes
  Using system provided SQLite ......... no
  TDS (Sybase) ........................... no

Дальше

mingw32-make.exe sub-mysql

И потом

mingw32-make.exe sub-mysql-install_subtargets

Создаем консольный проект для теста:

#include <QCoreApplication>
#include <QSqlDatabase>
#include <QDebug>

int main(int argc, char *argv[])
{
   QCoreApplication a(argc, argv);

   QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL");

   db.setHostName("10.28.8.78");
   db.setDatabaseName("hotline");
   db.setUserName("gluser");
   db.setPassword("SuP0rT");

   if(db.open()){
       qDebug() << "Database Open!";
   } else {
       qDebug() << "Database NOT Open!";
   }

   return a.exec();
}

Получаем:
Database Open!

Рекомендуем хостинг TIMEWEB
Рекомендуем хостинг TIMEWEB
Стабильный хостинг, на котором располагается социальная сеть EVILEG. Для проектов на Django рекомендуем VDS хостинг.

Вам это нравится? Поделитесь в социальных сетях!

c
  • 17 ноября 2019 г. 14:25

Шикарно!
Как обычно всё объясняется чётко, ясно и, по-возможности, кратко.
Побольше бы контента по PyQt5...

Evgenii Legotckoi
  • 18 ноября 2019 г. 6:10

Пока что на сайте нет активных пользователей PyQt5, кто бы мог писать статьи по PyQt5, к сожалению. Лично я только для статей пользуюсь этой библиотекой. Но можете стать одним из первых ;) Любой пользователь может написать статью ))

c
  • 18 ноября 2019 г. 6:27

Моих знаний пока явно недостаточно, чтобы писать статьи. Так...небольшие заметки "на полях"))).

Docent
  • 24 апреля 2020 г. 13:42
  • (ред.)
QSqlDatabase: No such file or directory
...
#include <QtSql/QSqlDatabase>
...
//MINGW_64
undefined reference to __imp__ZN12QSqlDatabase17defaultConnectionE
undefined reference to __imp__ZN12QSqlDatabase11addDatabaseERK7QStringS2_
undefined reference to __imp__ZN12QSqlDatabase11setHostNameERK7QString
...
//MSVC2017_64
LNK2019
LNK2019
LNK1120
ОС
  • 25 апреля 2020 г. 0:51

Наконец - то получилось после этой статьи. Благодарочка плотная!!) до этого были разные ошибки в компиляции, решил полностью снести QT, чтобы не заметать следы после предыдущих неудач. Поставил по новой, и вуаля! оказалось все легко.

Docent
  • 2 мая 2020 г. 7:54

Собрал скачанный *MySQL_8\mysql-8.0.19-winx64

*.pro
QT       += core gui sql
...

Всё Ok

Docent
  • 5 мая 2020 г. 18:19

Попытки собрать под MSVC2017 x64 пока приводят к ошибкам

Docent
  • 6 мая 2020 г. 16:48
  • (ред.)

Полностью снёс и поставил заново Qt
Попытка собрать драйвер MSVC2017:
-- прописываем в \Qt\5.13.2\msvc2017\mkspecs\common\msvc-version.conf QMAKE_MSC_VER = 1900
-- открываем консольку Qt 5.13.2 MSVC 2017 64

F:\PROGRAMS\Qt\5.13.2\msvc2017_64>cd F:\PROGRAMS\Qt\5.13.2\Src\qtbase\src\plugins\sqldrivers
F:\PROGRAMS\Qt\5.13.2\Src\qtbase\src\plugins\sqldrivers>qmake -- MYSQL_INCDIR="C:\MariaDB_64\include\mysql" MYSQL_LIBDIR="C:\MariaDB_64\lib"
Project ERROR: You cannot configure sqldrivers separately within a top-level build.

/////////////////////////////////////////////

F:\PROGRAMS\Qt\5.13.2\Src>qmake
Selecting Qt Edition.
Type 'c' if you want to use the Commercial Edition.
Type 'o' if you want to use the Open Source Edition.
Which edition of Qt do you want to use? o
This is the Qt Open Source Edition.
You are licensed to use this software under the terms of
the GNU Lesser General Public License (LGPL) version 3
or the GNU General Public License (GPL) version 2.
Type 'L' to view the GNU Lesser General Public License version 3 (LGPLv3).
Type 'G' to view the GNU General Public License version 2 (GPLv2).
Type 'y' to accept this license offer.
Type 'n' to decline this license offer.
Do you accept the terms of either license? y
Running configuration tests...
Checking for valid makespec... ERROR: Cannot compile a minimal program. The toolchain or QMakeSpec is broken.

Попытка повторить собрать драйвер MinGW 64:
-- открываем консольку Qt 5.13.2 MinGW 7.3.0 64

F:\PROGRAMS\Qt\5.13.2\Src\qtbase\src\plugins\sqldrivers>qmake -- MYSQL_INCDIR="C:\MariaDB_64\include\mysql" MYSQL_LIBDIR="C:\MariaDB_64\lib"
Project ERROR: You cannot configure sqldrivers separately within a top-level build.

//////////////////////////////////////////////

F:\PROGRAMS\Qt\5.13.2\Src>qmake
Selecting Qt Edition.
Type 'c' if you want to use the Commercial Edition.
Type 'o' if you want to use the Open Source Edition.
Which edition of Qt do you want to use? o
This is the Qt Open Source Edition.
You are licensed to use this software under the terms of
the GNU Lesser General Public License (LGPL) version 3
or the GNU General Public License (GPL) version 2.
Type 'L' to view the GNU Lesser General Public License version 3 (LGPLv3).
Type 'G' to view the GNU General Public License version 2 (GPLv2).
Type 'y' to accept this license offer.
Type 'n' to decline this license offer.
Do you accept the terms of either license? y
.......
куча всяких проверок
.....
Qt Sql:
  SQL item models ........................ yes
Qt Widgets:
  GTK+ ................................... no
  Styles ................................. Fusion Windows WindowsVista
Qt PrintSupport:
  CUPS ................................... no
Qt Sql Drivers:
  DB2 (IBM) .............................. no
  InterBase .............................. no
  MySql .................................. no
  OCI (Oracle) ........................... no
  ODBC ................................... no
  PostgreSQL ............................. no
  SQLite2 ................................ no
  SQLite ................................. yes
    Using system provided SQLite ......... no
  TDS (Sybase) ........................... no
Qt Testlib:

........
mingw32-make что-то там наколдовало
Затем попытка собрать
F:\PROGRAMS\Qt\5.13.2\Src\qtbase\src\plugins\sqldrivers>mingw32-make sub-mysql
mingw32-make: *** No rule to make target 'sub-mysql'.  Stop.

Что за магия и как с ней бороться?
Чего не хватает для MSVC? Почему ERROR: Cannot compile a minimal program. The toolchain or QMakeSpec is broken.
При попытке MinGW, что-то тоже пошло не так (видимо конфиг где-то "неправильный")
Как исправить?
Попытка запихать ранее скомпилированные (до эксперимента) .dll .lib во всяческе места результатов не дало

В идеале нужен драйвер для MSVC2017_64

СЯ
  • 17 мая 2020 г. 6:18
  • (ред.)

Оставлю это здесь для себя и потомков.

В общем такая беда у меня, когда я делал qmake -- MYSQL_INCDIR=D:/MariaDB/include/mysql MYSQL_LIBDIR=D:/MariaDB/lib, то у меня выдвал якобы нет драйвера mySQl, выдавал что т отипа этого:
Qt Sql Drivers:
DB2 (IBM) .............................. no
InterBase .............................. no
MySql .................................. no
OCI (Oracle) ........................... no
ODBC ................................... yes
PostgreSQL ............................. no
SQLite2 ................................ no
SQLite ................................. yes
Using system provided SQLite ......... no
TDS (Sybase) ........................... no

Нашел инфу здесь https://qna.habr.com/q/672201, что надо удалить папку C:\Qt\5.13.2\Src\qtbase\src\plugins\sqldrivers\config.tests, и файлы config.summary, config.opt, config.log, config.cache в папке C:\Qt\5.13.2\Src\qtbase\src\plugins\sqldrivers, и все, у меня взлетело...

П.С. И еще путь вместо этого MYSQL_INCDIR=D:/MariaDB/include/mysql, сделал так MYSQL_INCDIR=D:/MariaDB/include, не знаю наскольок критично, но в документации написано что QT нужен файл mysql.h, а он лежит как раз в директории D:/MariaDB/include, а не в D:/MariaDB/include/mysql

v
  • 18 июня 2020 г. 11:26

Добрый вечер. У меня вопрос по такой неприятности. Всё по статье скомилил, без ошибок, через "qDebug() << QSqlDatabase::drivers();" выдаёт наличие QMYSQL. Компилирует ваш пример, но при запуске пишет QMYSQL driver not loaded
QSqlDatabase: available drivers: QSQLITE QMYSQL QMYSQL3 QODBC QODBC3 QPSQL QPSQL7. Помогите, а? Пожалуйста!

Ruslan Polupan
  • 19 июня 2020 г. 1:30

Проверяйте пути. Не находит библиотеки. Я неделею назад устнавливал по своей же инструкции. Все работает.

v
  • 19 июня 2020 г. 1:58

Попробую ещё раз. С нуля.

v
  • 9 ноября 2021 г. 11:07

Спасибо, добрый человек!
Перелопатил весь stackoverflow в поисках ответа почему

MySql....no
, не осознавая что
mingw32-make clean
не очищает то что надо. После удаления вышеуказаных папок и файлов все сразу заработало. Собирал для MySQL 8, тот что шел в комплекте не поддерживает транзакции. Вся сборка в моем случае:

cd C:\SDK\Qt\5.12.0\Src\qtbase\src\plugins\sqldrivers
qmake -- MYSQL_INCDIR="C:/Program Files/MySQL/MySQL Server 8.0/include" MYSQL_LIBDIR="C:/Program Files/MySQL/MySQL Server 8.0/lib"
mingw32-make
s
  • 25 апреля 2022 г. 11:51

Добрый вечер, не поделитесь вариантом для OCI

Комментарии

Только авторизованные пользователи могут публиковать комментарии.
Пожалуйста, авторизуйтесь или зарегистрируйтесь
AD

C++ - Тест 004. Указатели, Массивы и Циклы

  • Результат:50баллов,
  • Очки рейтинга-4
m
  • molni99
  • 26 октября 2024 г. 1:37

C++ - Тест 004. Указатели, Массивы и Циклы

  • Результат:80баллов,
  • Очки рейтинга4
m
  • molni99
  • 26 октября 2024 г. 1:29

C++ - Тест 004. Указатели, Массивы и Циклы

  • Результат:20баллов,
  • Очки рейтинга-10
Последние комментарии
ИМ
Игорь Максимов22 ноября 2024 г. 11:51
Django - Урок 017. Кастомизированная страница авторизации на Django Добрый вечер Евгений! Я сделал себе авторизацию аналогичную вашей, все работает, кроме возврата к предидущей странице. Редеректит всегда на главную, хотя в логах сервера вижу запросы на правильн…
Evgenii Legotckoi
Evgenii Legotckoi31 октября 2024 г. 14:37
Django - Урок 064. Как написать расширение для Python Markdown Добрый день. Да, можно. Либо через такие же плагины, либо с постобработкой через python библиотеку Beautiful Soup
A
ALO1ZE19 октября 2024 г. 8:19
Читалка fb3-файлов на Qt Creator Подскажите как это запустить? Я не шарю в программировании и кодинге. Скачал и установаил Qt, но куча ошибок выдается и не запустить. А очень надо fb3 переконвертировать в html
ИМ
Игорь Максимов5 октября 2024 г. 7:51
Django - Урок 064. Как написать расширение для Python Markdown Приветствую Евгений! У меня вопрос. Можно ли вставлять свои классы в разметку редактора markdown? Допустим имея стандартную разметку: <ul> <li></li> <li></l…
d
dblas55 июля 2024 г. 11:02
QML - Урок 016. База данных SQLite и работа с ней в QML Qt Здравствуйте, возникает такая проблема (я новичок): ApplicationWindow неизвестный элемент. (М300) для TextField и Button аналогично. Могу предположить, что из-за более новой верси…
Сейчас обсуждают на форуме
m
moogo22 ноября 2024 г. 7:17
Mosquito Spray System Effective Mosquito Systems for Backyard | Eco-Friendly Misting Control Device & Repellent Spray - Moogo ; Upgrade your backyard with our mosquito-repellent device! Our misters conce…
Evgenii Legotckoi
Evgenii Legotckoi24 июня 2024 г. 15:11
добавить qlineseries в функции Я тут. Работы оень много. Отправил его в бан.
t
tonypeachey115 ноября 2024 г. 6:04
google domain [url=https://google.com/]domain[/url] domain [http://www.example.com link title]
NSProject
NSProject4 июня 2022 г. 3:49
Всё ещё разбираюсь с кешем. В следствии прочтения данной статьи. Я принял для себя решение сделать кеширование свойств менеджера модели LikeDislike. И так как установка evileg_core для меня не была возможна, ибо он писался…

Следите за нами в социальных сетях