Ruslan Polupan
Ruslan Polupan17. November 2019 09:07

Erstellen des QMYSQL-Treibers (MariaDB) Windows 10 x64 QT 5.13.0 Mingw73_64

Schönen Tag!

Eingerichtet:
Windows 10 x64
Qt 5.13.0 installiert in c:\Qt\
Der Datenbankserver läuft unter Linux OS.
mysql Ver 15.1 Distrib 10.3.18-MariaDB, für Linux (x86_64) unter Verwendung von readline 5.1


Laden Sie die 64-Bit-Version von MariaDB herunter, da Mingw 64-Bit ist.
mariadb-10.4.10-winx64.msi
Deaktivieren Sie während der Installation die Serverkomponenten.

Damit ich später nicht mit den Pfaden in Program Files leide, lege ich es in den Ordner meiner Wahl:
D:\MariaDB\
Gehen Sie zu Ordner D:\MariaDB\lib\ und erstellen Sie Kopien von Dateien
libmariadb.dll geben Sie einen neuen Namen libmysql.dll
libmariadb.lib geben Sie einen neuen Namen libmysql.lib
mariadbclient.lib neuen Namen mysqlclient.lib geben

Fügen Sie der Umgebungsvariablen PATH die folgenden Pfade hinzu:
C:\Qt\5.13.0\mingw73_64\bin
C:\Qt\Tools\mingw730_64\bin
D:\MariaDB\lib
Gehen Sie zu C:\Qt\5.13.0\Src\qtbase\src\plugins\sqldrivers
Wir machen Folgendes:

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

Wir bekommen

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

Weiter

mingw32-make.exe sub-mysql

Und dann

mingw32-make.exe sub-mysql-install_subtargets

Erstellen Sie ein Konsolenprojekt für den 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();
}

Wir bekommen:
Datenbank geöffnet!

Рекомендуємо хостинг TIMEWEB
Рекомендуємо хостинг TIMEWEB
Stabiles Hosting des sozialen Netzwerks EVILEG. Wir empfehlen VDS-Hosting für Django-Projekte.

Magst du es? In sozialen Netzwerken teilen!

c
  • 17. November 2019 14:25

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

Evgenii Legotckoi
  • 18. November 2019 06:10

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

c
  • 18. November 2019 06:27

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

Docent
  • 24. April 2020 13:42
  • (bearbeitet)
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. April 2020 00:51

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

Docent
  • 2. Mai 2020 07:54

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

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

Всё Ok

Docent
  • 5. Mai 2020 18:19

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

Docent
  • 6. Mai 2020 16:48
  • (bearbeitet)

Полностью снёс и поставил заново 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. Mai 2020 06:18
  • (bearbeitet)

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

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

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

Ruslan Polupan
  • 19. Juni 2020 01:30

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

v
  • 19. Juni 2020 01:58

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

v
  • 9. November 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. April 2022 11:51

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

Kommentare

Nur autorisierte Benutzer können Kommentare posten.
Bitte Anmelden oder Registrieren
Letzte Kommentare
ИМ
Игорь Максимов5. Oktober 2024 13:51
Django – Lektion 064. So schreiben Sie eine Python-Markdown-Erweiterung Приветствую Евгений! У меня вопрос. Можно ли вставлять свои классы в разметку редактора markdown? Допустим имея стандартную разметку: <ul> <li></li> <li></l…
d
dblas55. Juli 2024 17:02
QML - Lektion 016. SQLite-Datenbank und das Arbeiten damit in QML Qt Здравствуйте, возникает такая проблема (я новичок): ApplicationWindow неизвестный элемент. (М300) для TextField и Button аналогично. Могу предположить, что из-за более новой верси…
k
kmssr9. Februar 2024 00:43
Qt Linux - Lektion 001. Autorun Qt-Anwendung unter Linux как сделать автозапуск для флэтпака, который не даёт создавать файлы в ~/.config - вот это вопрос ))
Qt WinAPI - Lektion 007. Arbeiten mit ICMP-Ping in Qt Без строки #include <QRegularExpressionValidator> в заголовочном файле не работает валидатор.
EVA
EVA25. Dezember 2023 16:30
Boost - statisches Verknüpfen im CMake-Projekt unter Windows Ошибка LNK1104 часто возникает, когда компоновщик не может найти или открыть файл библиотеки. В вашем случае, это файл libboost_locale-vc142-mt-gd-x64-1_74.lib из библиотеки Boost для C+…
Jetzt im Forum diskutieren
J
JacobFib17. Oktober 2024 09:27
добавить qlineseries в функции Пользователь может получить любые разъяснения по интересующим вопросам, касающимся обработки его персональных данных, обратившись к Оператору с помощью электронной почты https://topdecorpro.ru…
JW
Jhon Wick1. Oktober 2024 21:52
Indian Food Restaurant In Columbus OH| Layla’s Kitchen Indian Restaurant If you're looking for a truly authentic https://www.laylaskitchenrestaurantohio.com/ , Layla’s Kitchen Indian Restaurant is your go-to destination. Located at 6152 Cleveland Ave, Colu…
КГ
Кирилл Гусарев27. September 2024 15:09
Не запускается программа на Qt: точка входа в процедуру не найдена в библиотеке DLL Написал программу на C++ Qt в Qt Creator, сбилдил Release с помощью MinGW 64-bit, бинарнику напихал dll-ки с помощью windeployqt.exe. При попытке запуска моей сбилженной программы выдаёт три оши…
F
Fynjy22. Juli 2024 10:15
при создании qml проекта Kits есть но недоступны для выбора Поставил Qt Creator 11.0.2. Qt 6.4.3 При создании проекта Qml не могу выбрать Kits, они все недоступны, хотя настроены и при создании обычного Qt Widget приложения их можно выбрать. В чем может …

Folgen Sie uns in sozialen Netzwerken