Ruslan Polupan
Ruslan PolupanNov. 17, 2019, 9:07 a.m.

Building the QMYSQL driver (MariaDB) Windows 10 x64 QT 5.13.0 Mingw73_64

Good day!

Installed:
Windows 10 x64
Qt 5.13.0 installed in c:\Qt\
The database server runs on Linux OS.
mysql Ver 15.1 Distrib 10.3.18-MariaDB, for Linux (x86_64) using readline 5.1


Download the 64 bit version of MariaDB because Mingw is 64 bit.
mariadb-10.4.10-winx64.msi
During installation, disable the server components.

So that later I don’t suffer with the paths in Program Files, I put it in the folder of my choice:
D:\MariaDB\
Go to Folder D:\MariaDB\lib\ and make copies of files
libmariadb.dll give a new name libmysql.dll
libmariadb.lib give a new name libmysql.lib
mariadbclient.lib give new name mysqlclient.lib

Add the following paths to the PATH environment variable:
C:\Qt\5.13.0\mingw73_64\bin
C:\Qt\Tools\mingw730_64\bin
D:\MariaDB\lib
Go to C:\Qt\5.13.0\Src\qtbase\src\plugins\sqldrivers
We do the following:

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

We get

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

Farther

mingw32-make.exe sub-mysql

And then

mingw32-make.exe sub-mysql-install_subtargets

Create a console project for the test:

#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();
}

We get:
Database Open!

We recommend hosting TIMEWEB
We recommend hosting TIMEWEB
Stable hosting, on which the social network EVILEG is located. For projects on Django we recommend VDS hosting.

Do you like it? Share on social networks!

c
  • Nov. 17, 2019, 2:25 p.m.

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

Evgenii Legotckoi
  • Nov. 18, 2019, 6:10 a.m.

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

c
  • Nov. 18, 2019, 6:27 a.m.

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

Docent
  • April 24, 2020, 1:42 p.m.
  • (edited)
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
ОС
  • April 25, 2020, 12:51 a.m.

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

Docent
  • May 2, 2020, 7:54 a.m.

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

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

Всё Ok

Docent
  • May 5, 2020, 6:19 p.m.

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

Docent
  • May 6, 2020, 4:48 p.m.
  • (edited)

Полностью снёс и поставил заново 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

СЯ
  • May 17, 2020, 6:18 a.m.
  • (edited)

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

В общем такая беда у меня, когда я делал 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
  • June 18, 2020, 11:26 a.m.

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

Ruslan Polupan
  • June 19, 2020, 1:30 a.m.

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

v
  • June 19, 2020, 1:58 a.m.

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

v
  • Nov. 9, 2021, 11:07 a.m.

Спасибо, добрый человек!
Перелопатил весь 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
  • April 25, 2022, 11:51 a.m.

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

Comments

Only authorized users can post comments.
Please, Log in or Sign up
AD

C ++ - Test 004. Pointers, Arrays and Loops

  • Result:50points,
  • Rating points-4
m

C ++ - Test 004. Pointers, Arrays and Loops

  • Result:80points,
  • Rating points4
m

C ++ - Test 004. Pointers, Arrays and Loops

  • Result:20points,
  • Rating points-10
Last comments
ИМ
Игорь МаксимовNov. 22, 2024, 10:51 p.m.
Django - Tutorial 017. Customize the login page to Django Добрый вечер Евгений! Я сделал себе авторизацию аналогичную вашей, все работает, кроме возврата к предидущей странице. Редеректит всегда на главную, хотя в логах сервера вижу запросы на правильн…
Evgenii Legotckoi
Evgenii LegotckoiNov. 1, 2024, 12:37 a.m.
Django - Lesson 064. How to write a Python Markdown extension Добрый день. Да, можно. Либо через такие же плагины, либо с постобработкой через python библиотеку Beautiful Soup
A
ALO1ZEOct. 19, 2024, 6:19 p.m.
Fb3 file reader on Qt Creator Подскажите как это запустить? Я не шарю в программировании и кодинге. Скачал и установаил Qt, но куча ошибок выдается и не запустить. А очень надо fb3 переконвертировать в html
ИМ
Игорь МаксимовOct. 5, 2024, 5:51 p.m.
Django - Lesson 064. How to write a Python Markdown extension Приветствую Евгений! У меня вопрос. Можно ли вставлять свои классы в разметку редактора markdown? Допустим имея стандартную разметку: <ul> <li></li> <li></l…
d
dblas5July 5, 2024, 9:02 p.m.
QML - Lesson 016. SQLite database and the working with it in QML Qt Здравствуйте, возникает такая проблема (я новичок): ApplicationWindow неизвестный элемент. (М300) для TextField и Button аналогично. Могу предположить, что из-за более новой верси…
Now discuss on the forum
m
moogoNov. 22, 2024, 6:17 p.m.
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 LegotckoiJune 25, 2024, 1:11 a.m.
добавить qlineseries в функции Я тут. Работы оень много. Отправил его в бан.
t
tonypeachey1Nov. 15, 2024, 5:04 p.m.
google domain [url=https://google.com/]domain[/url] domain [http://www.example.com link title]
NSProject
NSProjectJune 4, 2022, 1:49 p.m.
Всё ещё разбираюсь с кешем. В следствии прочтения данной статьи. Я принял для себя решение сделать кеширование свойств менеджера модели LikeDislike. И так как установка evileg_core для меня не была возможна, ибо он писался…

Follow us in social networks