Не могу собрать QMYSQL под Windows

585
02 июня 2017, 12:09

Знаю, что тема очень избитая, но у меня не получается собрать драйвер MySQL для Qt 5.8 (MinGW). Гуглил хорошо, пробовал массу вариантов.

  1. Скачал MySQL Connector C x86 с официального сайта
  2. Скачал Qt 5.8 MinGW32, в установке отметил Sources

Глобальные переменные окружения, если что

C:\Qt\Qt5.8.0mingw\5.8\Src\qtbase\src\plugins\sqldrivers\mysql>where qmake C:\Qt\Qt5.8.0mingw\5.8\mingw53_32\bin\qmake.exe

C:\Qt\Qt5.8.0mingw\5.8\Src\qtbase\src\plugins\sqldrivers\mysql>where mingw32-make C:\Qt\Qt5.8.0mingw\Tools\mingw530_32\bin\mingw32-make.exe

Установил MySQL Connector в C:\Qt\Mysql. Проблем с кириллицей/пробелами не должно быть.

  1. Выполнил команды:

C:\Qt\Qt5.8.0mingw\5.8\Src\qtbase\src\plugins\sqldrivers\mysql>qmake "INCLUDEPATH+=C:\Qt\MySQL\include" "LIBS+=C:\Qt\MySQL\lib\libmysql.lib" mysql.pro

Далее выполнил команду

C:\Qt\Qt5.8.0mingw\5.8\Src\qtbase\src\plugins\sqldrivers\mysql>mingw32-make
mingw32-make -f Makefile.Release all
mingw32-make[1]: Entering directory 'C:/Qt/Qt5.8.0mingw/5.8/Src/qtbase/src/plugins/sqldrivers/mysql'
...
g++ -Wl,-s -shared -Wl,-subsystem,windows -Wl,--out-implib,C:\Qt\Qt5.8.0mingw\5.8\Src\qtbase\plugins\sqldrivers\libqsqlmysql.a -o ..\..\..\..\plugins\sqldrivers\qsqlmysql.dll .obj/release/qsql_mysql.o .obj/release/main.o .obj/release/moc_qsql_mysql_p.o  -LC:\utils\my_sql\my_sql\lib -LC:\utils\postgresql\pgsql\lib C:\Qt\MySQL\lib\libmysql.lib -LC:\Qt\Qt5.8.0mingw\5.8\mingw53_32\lib C:\Qt\Qt5.8.0mingw\5.8\mingw53_32\lib\libQt5Sql.a C:\Qt\Qt5.8.0mingw\5.8\mingw53_32\lib\libQt5Core.a -llibmysql .obj\release\qsqlmysql_resource_res.o
C:/Qt/Qt5.8.0mingw/Tools/mingw530_32/bin/../lib/gcc/i686-w64-mingw32/5.3.0/../../../../i686-w64-mingw32/bin/ld.exe: cannot find -llibmysql
collect2.exe: error: ld returned 1 exit status
Makefile.Release:65: recipe for target '..\..\..\..\plugins\sqldrivers\qsqlmysql.dll' failed
mingw32-make[1]: *** [..\..\..\..\plugins\sqldrivers\qsqlmysql.dll] Error 1
mingw32-make[1]: Leaving directory 'C:/Qt/Qt5.8.0mingw/5.8/Src/qtbase/src/plugins/sqldrivers/mysql'
Makefile:38: recipe for target 'release-all' failed
mingw32-make: *** [release-all] Error 2

cannot find -llibmysql Элементарная вроде ошибка, много решений в гугле, но никак не могу решить проблему. Что я не так делаю?

UPD Либы вроде собрал. Только вот странная проблема. Не хочу плодить тему по такому пустяку(хотя для меня это не пустяк).

Если создавать подключение так:

QSqlDatabase pDB = QSqlDatabase::addDatabase("QMYSQL");
pDB.setHostName("sql11.freemysqlhosting.net");
pDB.setDatabaseName("sql11177506");
pDB.setPort(3306);
pDB.setUserName("sql11177506");
pDB.setPassword("ITIziMsIWx");
qDebug() << pDB.open() << pDB.lastError().text();

То как-бы работает. А если через указатель:

QSqlDatabase *pDB = new QSqlDatabase;
pDB->addDatabase("QMYSQL");
pDB->setHostName("sql11.freemysqlhosting.net");
pDB->setDatabaseName("sql11177506");
pDB->setPort(3306);
pDB->setUserName("sql11177506");
pDB->setPassword("ITIziMsIWx");
qDebug() << pDB->open() << pDB->lastError().text();

То пишет Driver not loaded Driver not loaded Почему так не работает?

Answer 1

Попробуйте сделать так:

C:\Qt\Qt5.8.0mingw\5.8\Src\qtbase\src\plugins\sqldrivers\mysql>qmake "INCLUDEPATH+=C:\Qt\MySQL\include" "LIBS+=-LC:\Qt\MySQL\lib" mysql.pro

По поводу второй проблемы, попробуйте так:

QSqlDatabase *pDB = new QSqlDatabase;
*pDB = QSqlDatabase::addDatabase("QMYSQL");
pDB->setHostName("sql11.freemysqlhosting.net");
pDB->setDatabaseName("sql11177506");
pDB->setPort(3306);
pDB->setUserName("sql11177506");
pDB->setPassword("ITIziMsIWx");
READ ALSO
Не создаётся сокет mysql

Не создаётся сокет mysql

При загрузке системы ubuntu в папке /var/run не создаётся папка mysqld, и => сокета тоже не создаётсяЯ так понимаю, папка mysqld должна быть в /run тоже, но её там...

225
Ошибка &ldquo;ERROR 2003 (HY000): Can&#39;t connect to MySQL server on &#39;&#39; (111)&rdquo; при удаленном доступе к mysql [требует правки]

Ошибка “ERROR 2003 (HY000): Can't connect to MySQL server on '' (111)” при удаленном доступе к mysql [требует правки]

При попытке подключения к удаленному MySQL серверу получаю ошибку "ERROR 2003 (HY000): Can't connect to MySQL server on 'ip-сервера' (111)", дело в том, что такая ошибка...

248
Вывод дерева mysql

Вывод дерева mysql

Есть таблица elements следующей структуры Adjacency List Model:

291
Оставить в БД только n записей

Оставить в БД только n записей

ЗдравствуйтеЗадание такое: в базе должно храниться не более 12 записей

352