Russian Qt Forum
Ноябрь 22, 2024, 23:46 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Qt 5.8 и MySQL драйвер  (Прочитано 10501 раз)
urivskay
Гость
« : Февраль 07, 2017, 16:25 »

Добрый день. Прежде чем, обратиться к вам за помощью, я перечитала кучу статей, о том как собрать драйвер Mysql для Qt под Windows. Много раз пробовала, но никак не получается у меня собрать этот драйвер. Подскажите, пожалуйста, в чём может быть проблема ? Ниже описаны действия, которые я проделала:
1) скачала qt-opensource-windows-x86-mingw530-5.8.0.exe. При установке добавила галочку, установить исходники.
2) скачала mysql-5.5.23-win32.msi с сайта http://www.mysql.ru/download/ и установила. Установка была в папку C:\Program Files (x86)\MySQL\MySQL Server 5.5. После установки я скопировала папку MySQL и положила в корень диска C, заменив пробелы в имени папки нижним подчеркиванием.
3) в переменную среды Path добавила:
    C:\MySQL\MySQL_Server_5_5;
    C:\Qt\Qt5.8.0\5.8\mingw53_32\bin;
    C:\Qt\Qt5.8.0\5.8\mingw53_32\lib;
    C:\MySQL\MySQL_Server_5_5\lib;
    C:\Qt\Qt5.8.0\Tools\mingw530_32\bin
4) Запустила Qt 5.8 for Desktop (MinGW 5.3.0 32 bit).exe и выполнила в нём следующие команды:
    set mysql=C:\MySQL\MySQL_Server_5_5
    cd C:\Qt\Qt5.8.0\5.8\Src\qtbase\src\plugins\sqldrivers\mysql
    qmake "INCLUDEPATH+=%mysql%\\include" "LIBS+=-L%mysql%\\lib\\ -lmysql" -o Makefile mysql.pro
    mingw32-make

Пошла сборка, но завершается не успешно. В выводе я не вижу ошибок, но сборка заканчивается странной строчкой: Leaving directory 'C:/Qt/Qt5.8.0/5.8/Src/qtbase/src/plugins/sqldrivers/mysql'
В папке C:\Qt\Qt5.8.0\5.8\Src\qtbase\src\plugins\sqldrivers\mysql не появилось .dll файлов.
Повторный вызов команды mingw32-make выводит странные ошибки. Я прилагаю скриншот с ошибками.
Пожалуйста, помогите, разобраться в чём причина не успешной сборки и что мне делать ?
Записан
ViTech
Гипер активный житель
*****
Offline Offline

Сообщений: 858



Просмотр профиля
« Ответ #1 : Февраль 07, 2017, 16:49 »

А где-нибудь в "C:\Qt\Qt5.8.0\5.8\mingw53_32\bin" нужной dll не появилось? Или в "C:\Qt\Qt5.8.0\5.8\mingw53_32\plugins\sqldrivers\"? В Qt 5.8 пути могут быть другие, пишу по аналогии Qt 5.6.
Записан

Пока сам не сделаешь...
urivskay
Гость
« Ответ #2 : Февраль 07, 2017, 16:52 »

Появилось! Я нашла "105-й" мануал по тому как собрать драйвер MySQL. Сделала всё как в нём описано и нашла собранные файлы!
Ссылка на мануал, который мне помог https://wiki.belykh.me/wiki/index.php/Сборка_драйвера_MySQL_для_Qt
Уже проверила в проекте, соединение с БД успешно устанавливается, и никаких ошибок больше не сыпется. Всем спасибо за внимание!
Записан
urivskay
Гость
« Ответ #3 : Февраль 07, 2017, 17:17 »

Возник ещё вопрос. Как мне через Qt приложение соединиться с удаленным сервером mysql ? Через phpMyAdmin на хостинге, я успешно захожу в свою базу. Но вот через приложение не удается соединиться... Я так понимаю дело наверное в ssl соединение, которое должно использоваться при подключении к базе. Кто сталкивался, подскажите,пожалуйста, как вы этого добились ?
Приведу мой простенький код:
Код:
#include "mainwindow.h"
#include <QApplication>
#include <QSqlDatabase>
#include <QDebug>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    MainWindow w;
    w.show();

    QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL");
    db.setHostName("mysql87.1gb.ru");
    db.setDatabaseName("имя базы");
    db.setUserName("пользователь");
    db.setPassword("пароль");
    db.setConnectOptions();
    if (db.open())
       qDebug() << "OKKKKK!";
    else qDebug() << "Failed to connect to root mysql admin";

    return a.exec();
}
Записан
PimenS
Крякер
****
Offline Offline

Сообщений: 371


Просмотр профиля
« Ответ #4 : Февраль 07, 2017, 19:31 »

Причин отказа может быть несколько.

1. На сервере запрещены внешние соединения с базой.
2. Для внешнего соединения определен не стандартный порт соединения.

Цитировать
db.setHostName("mysql87.1gb.ru");
    db.setDatabaseName("имя базы");
    db.setUserName("пользователь");
    db.setPassword("пароль");

Какой вы порт используете?

это с чего бы я начал проверять.
Записан
ssoft
Программист
*****
Offline Offline

Сообщений: 584


Просмотр профиля
« Ответ #5 : Февраль 07, 2017, 19:39 »

Неплохо бы еще воспользоваться методом lastError(), и соответствующими методами QSqlError

Код
C++ (Qt)
QString databaseText () const;
QString driverText () const;
QString text () const;
 

и др.
Записан
vebmaster
Новичок

Offline Offline

Сообщений: 47


Просмотр профиля
« Ответ #6 : Февраль 09, 2017, 13:44 »

вместо сборки соей libmysql.dll лучше возьмите уже готовую, я брал из дистрибутива OpenServer: OpenServer\modules\database\MySQL-5.7\lib\


Код:
if ( ! db.open() ) {
        qDebug() << db.lastError();
        qDebug() << "! Mysql Error" << "Cannot open database:" << db.lastError().text();
        return false;
}
Записан
urivskay
Гость
« Ответ #7 : Февраль 09, 2017, 13:59 »

Спасибо все за ответы! Всё дело оказалось в том, что на рабочем компьютере у меня были закрыты порты. И поэтому я не могла соединиться с внешней базой. Сейчас всё в порядке)
P.S. Про OpenServer впервые слышу. Посмотрю. Спасибо)
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.074 секунд. Запросов: 22.