Доброго часу доби!
Встановлено:
Windows 10 x64
Qt 5.13.0 встановлений з:\Qt\
Сервер БД працює на ОС Linux.
mysql Ver 15.1 Distrib 10.3.18-MariaDB, для Linux (x86_64) з використанням 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(); }
Отримуємо:
Відкрита база даних!
Шикарно!
Как обычно всё объясняется чётко, ясно и, по-возможности, кратко.
Побольше бы контента по 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