Russian Qt Forum

Qt => Базы данных => Тема начата: rudireg от Ноябрь 22, 2020, 18:51



Название: Драйвер для MariaDB (Ubuntu 18)
Отправлено: rudireg от Ноябрь 22, 2020, 18:51
Всем привет.
Есть код подключения к БД MariaDB
(https://i.ibb.co/1qdcs1g/011.png)
Код:
     QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL", "mydb");
     db.setHostName("localhost");
     db.setDatabaseName("tc-db-main");
     db.setUserName("root");
     db.setPassword("12345");
     bool ok = db.open();

Получаю ошибку
Цитировать
QSqlDatabase: QMYSQL driver not loaded
QSqlDatabase: available drivers: QSQLITE QMYSQL QMYSQL3 QPSQL QPSQL7

Из ошибки понятно что нужен драйвер для MySQL
У меня Ubuntu 18.04.4 LTS

(https://i.ibb.co/B4PDvJT/007.png)
(https://i.ibb.co/jTNcjYX/009.png)

Нашел где лежат файлы MySql
/usr/include/mysql
(https://i.ibb.co/PcJqTvX/010.png)

иду по пути где лежат плагины
/home/rudi/Qt/5.11.2/Src/qtbase/src/plugins/sqldrivers/mysql

Оттуда запускаю кманду
qmake "INCLUDEPATH+=/usr/include/mysql" "LIBS+=-L/usr/lib/x86_64-linux-gnu -lmysqlclient" mysql.pro


Получаю такой вывод
/home/rudi/Qt/5.11.2/Src/qtbase/src/plugins/sqldrivers/qsqldriverbase.pri:4: Unknown replace function: shadowed
WARNING: /home/rudi/Qt/5.11.2/Src/qtbase/src/plugins/sqldrivers/qsqldriverbase.pri:4: Unable to find file for inclusion /qtsqldrivers-config.pri
WARNING: /home/rudi/Qt/5.11.2/Src/qtbase/src/plugins/sqldrivers/qsqldriverbase.pri:7: Unable to find file for inclusion qt_plugin
Project MESSAGE: Warning: unknown QT: core-private
Project MESSAGE: Warning: unknown QT: sql-private


Подскажите что не так? Как мне сделать драйвер?


Название: Re: Драйвер для MariaDB (Ubuntu 18)
Отправлено: qate от Ноябрь 23, 2020, 12:08
какаято вакханалия версий штатное qt 5.9, поставлено 5.11.2, креатор еще свежее
в составе qt драйвера БД уже собран, но при запуске он не находится


Название: Re: Драйвер для MariaDB (Ubuntu 18)
Отправлено: rudireg от Ноябрь 23, 2020, 21:46
какаято вакханалия версий штатное qt 5.9, поставлено 5.11.2, креатор еще свежее
в составе qt драйвера БД уже собран, но при запуске он не находится


У меня есть папки
/home/rudi/Qt/5.9.9
/home/rudi/Qt/5.11.2


Пока что взял и переименовал папку
/home/rudi/Qt/5.9.9
на другое имя
/home/rudi/Qt/5.9.9__old

Сборка драйвера по прежнему не запускается как надо...
Но зато программа подключается к базе MariaDB без ошибок.
 ;D


Название: Re: Драйвер для MariaDB (Ubuntu 18)
Отправлено: qate от Ноябрь 24, 2020, 12:27
да нинада ничего собирать, всё собрано до нас ) , если конечно это не самоцель
я кто тому, что если тебе именно надо под 18.04, то и бери штатный qt 5.9 (или какой он там), зачем более свежие qt поставил ?
если надо свежий qt - ставить 20.04 или 20.10



Название: Re: Драйвер для MariaDB (Ubuntu 18)
Отправлено: Авварон от Ноябрь 24, 2020, 12:59
драйвер иногда надо пересобирать - из-за зоопарка библиотек он может не находить libmysql.so (она может внезапно называться libmariadb.so).
ldd на плагин в помощь - можно просто сделать симлинк с правильным именем. это непереносимое решение, но самое простое.


Название: Re: Драйвер для MariaDB (Ubuntu 18)
Отправлено: Авварон от Ноябрь 24, 2020, 13:01
а не, поправка - плагин больше не собирается по дефолту (там что-то с лицензией как я припоминаю)

Код:
$ ll ~/Qt/5.15.1/gcc_64/plugins/sqldrivers/
итого 1528
-rwxr-xr-x 1 ivk 1320632 сен  3 06:08 libqsqlite.so*
-rwxr-xr-x 1 ivk  119360 сен  3 06:07 libqsqlodbc.so*
-rwxr-xr-x 1 ivk  115120 сен  3 06:07 libqsqlpsql.so*


Название: Re: Драйвер для MariaDB (Ubuntu 18)
Отправлено: Авварон от Ноябрь 24, 2020, 13:03
Вот мануал (https://doc.qt.io/qt-5/sql-driver.html#qmysql) как собирать драйвер.
если меняете что-то, надо удалять qmake.stash и прочие файлики которые оно создает (иначе оно кеширует резуьтат конфигурации и по факту ничего не меняется)


Название: Re: Драйвер для MariaDB (Ubuntu 18)
Отправлено: qate от Ноябрь 24, 2020, 14:48
а не, поправка - плагин больше не собирается по дефолту (там что-то с лицензией как я припоминаю)

у ТС старая qt, там всё было собрано (хотя он не объяснил зоопарк версий)
на 20.04 есть пакет libqt5sql5-mysql