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!
Шикарно!
Как обычно всё объясняется чётко, ясно и, по-возможности, кратко.
Побольше бы контента по PyQt5...
Пока что на сайте нет активных пользователей PyQt5, кто бы мог писать статьи по PyQt5, к сожалению. Лично я только для статей пользуюсь этой библиотекой. Но можете стать одним из первых ;) Любой пользователь может написать статью ))
Моих знаний пока явно недостаточно, чтобы писать статьи. Так...небольшие заметки "на полях"))).
Наконец - то получилось после этой статьи. Благодарочка плотная!!) до этого были разные ошибки в компиляции, решил полностью снести QT, чтобы не заметать следы после предыдущих неудач. Поставил по новой, и вуаля! оказалось все легко.
Собрал скачанный *MySQL_8\mysql-8.0.19-winx64
Всё Ok
Попытки собрать под MSVC2017 x64 пока приводят к ошибкам
Полностью снёс и поставил заново Qt
Попытка собрать драйвер MSVC2017:
-- прописываем в \Qt\5.13.2\msvc2017\mkspecs\common\msvc-version.conf QMAKE_MSC_VER = 1900
-- открываем консольку Qt 5.13.2 MSVC 2017 64
Попытка повторить собрать драйвер MinGW 64:
-- открываем консольку Qt 5.13.2 MinGW 7.3.0 64
Что за магия и как с ней бороться?
Чего не хватает для MSVC? Почему ERROR: Cannot compile a minimal program. The toolchain or QMakeSpec is broken.
При попытке MinGW, что-то тоже пошло не так (видимо конфиг где-то "неправильный")
Как исправить?
Попытка запихать ранее скомпилированные (до эксперимента) .dll .lib во всяческе места результатов не дало
В идеале нужен драйвер для MSVC2017_64
Оставлю это здесь для себя и потомков.
В общем такая беда у меня, когда я делал 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
Добрый вечер. У меня вопрос по такой неприятности. Всё по статье скомилил, без ошибок, через "qDebug() << QSqlDatabase::drivers();" выдаёт наличие QMYSQL. Компилирует ваш пример, но при запуске пишет QMYSQL driver not loaded
QSqlDatabase: available drivers: QSQLITE QMYSQL QMYSQL3 QODBC QODBC3 QPSQL QPSQL7. Помогите, а? Пожалуйста!
Проверяйте пути. Не находит библиотеки. Я неделею назад устнавливал по своей же инструкции. Все работает.
Попробую ещё раз. С нуля.
Спасибо, добрый человек!
, не осознавая что не очищает то что надо. После удаления вышеуказаных папок и файлов все сразу заработало. Собирал для MySQL 8, тот что шел в комплекте не поддерживает транзакции. Вся сборка в моем случае:Перелопатил весь stackoverflow в поисках ответа почему
Добрый вечер, не поделитесь вариантом для OCI