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!
Шикарно!
Как обычно всё объясняется чётко, ясно и, по-возможности, кратко.
Побольше бы контента по 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