Ruslan Polupan
Ruslan PolupanҚар. 17, 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, 2:25 Т.Қ.

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

Evgenii Legotckoi
  • Қар. 18, 2019, 6:10 Т.Ж.

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

c
  • Қар. 18, 2019, 6:27 Т.Ж.

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

Docent
  • Сәуір 24, 2020, 1: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, 12:51 Т.Ж.

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

Docent
  • Мамыр 2, 2020, 7:54 Т.Ж.

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

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

Всё Ok

Docent
  • Мамыр 5, 2020, 6:19 Т.Қ.

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

Docent
  • Мамыр 6, 2020, 4: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

Пікірлер

Тек рұқсаты бар пайдаланушылар ғана пікір қалдыра алады.
Кіріңіз немесе Тіркеліңіз
Г

C++ - Тест 001. Первая программа и типы данных

  • Нәтиже:66ұпай,
  • Бағалау ұпайлары-1
t

C++ - Тест 001. Первая программа и типы данных

  • Нәтиже:33ұпай,
  • Бағалау ұпайлары-10
t

Qt - Тест 001. Сигналы и слоты

  • Нәтиже:52ұпай,
  • Бағалау ұпайлары-4
Соңғы пікірлер
G
GoattRockҚыр. 3, 2024, 1:50 Т.Қ.
Linux жүйесінде файлдарды қалай көшіруге болады Задумывались когда-нибудь о том, как мы привыкли доверять свои вещи службам грузоперевозок? Сейчас такие услуги стали неотъемлемой частью нашей жизни, особенно когда речь идет о переездах между …
d
dblas5Шілде 5, 2024, 11:02 Т.Ж.
QML - Сабақ 016. SQLite деректер қоры және онымен QML Qt-та жұмыс істеу Здравствуйте, возникает такая проблема (я новичок): ApplicationWindow неизвестный элемент. (М300) для TextField и Button аналогично. Могу предположить, что из-за более новой верси…
k
kmssrАқп. 8, 2024, 6:43 Т.Қ.
Qt Linux - Сабақ 001. Linux астында Autorun Qt қолданбасы как сделать автозапуск для флэтпака, который не даёт создавать файлы в ~/.config - вот это вопрос ))
АК
Анатолий КононенкоАқп. 5, 2024, 1:50 Т.Ж.
Qt WinAPI - Сабақ 007. Qt ішінде ICMP Ping арқылы жұмыс істеу Без строки #include <QRegularExpressionValidator> в заголовочном файле не работает валидатор.
Енді форумда талқылаңыз
Evgenii Legotckoi
Evgenii LegotckoiМаусым 24, 2024, 3:11 Т.Қ.
добавить qlineseries в функции Я тут. Работы оень много. Отправил его в бан.
F
FynjyШілде 22, 2024, 4:15 Т.Ж.
при создании qml проекта Kits есть но недоступны для выбора Поставил Qt Creator 11.0.2. Qt 6.4.3 При создании проекта Qml не могу выбрать Kits, они все недоступны, хотя настроены и при создании обычного Qt Widget приложения их можно выбрать. В чем может …
BlinCT
BlinCTМаусым 25, 2024, 1 Т.Ж.
Нарисовать кривую в qml Всем привет. Имеется Лист листов с тосками, точки получаны интерполяцией Лагранжа. Вопрос, как этими точками нарисовать кривую? ChartView отпадает сразу, в qt6.7 появился новый элемент…
BlinCT
BlinCTМамыр 5, 2024, 5:46 Т.Ж.
Написать свой GraphsView Всем привет. В Qt есть давольно старый обьект дял работы с графиками ChartsView и есть в 6.7 новый но очень сырой и со слабым функционалом GraphsView. По этой причине я хочу написать х…
Evgenii Legotckoi
Evgenii LegotckoiМамыр 2, 2024, 2:07 Т.Қ.
Мобильное приложение на C++Qt и бэкенд к нему на Django Rest Framework Добрый день. По моему мнению - да, но то, что будет касаться вызовов к функционалу Андроида, может создать огромные трудности.

Бізді әлеуметтік желілерде бақылаңыз