Russian Qt Forum

Qt => Вопросы новичков => Тема начата: stanukih от Октябрь 14, 2015, 09:00



Название: Qt Mysql
Отправлено: stanukih от Октябрь 14, 2015, 09:00
Версия Qt - 5.5
MySQl 5.5.

Вот этот код
Код:
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include "QSqlDatabase"
#include "QSql"
#include "QSqlDriver"
#include "QDebug"
#include "QSqlError"


QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL", "mydb");
MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
        db.setDatabaseName("grafic");
        db.setUserName("root");
        db.setPassword("");
        db.setHostName("localhost");
        db.setConnectOptions();

        if (!db.open())
            qDebug()<<"Ups"<< QSqlDatabase::drivers();
        else
            qDebug()<<"Ok";
    ui->setupUi(this);
}

MainWindow::~MainWindow()
{
    delete ui;
}
Выдает

QSqlDatabase: QMYSQL driver not loaded
QSqlDatabase: available drivers: QSQLITE QMYSQL QMYSQL3 QODBC QODBC3 QPSQL QPSQL7
Ups ("QSQLITE", "QMYSQL", "QMYSQL3", "QODBC", "QODBC3", "QPSQL", "QPSQL7")

Вопрос почему он не загружает драйвер? Ведь последняя строка говорит что он есть.


Название: Re: Qt Mysql
Отправлено: PimenS от Октябрь 14, 2015, 09:27
Для работы QMYSQL нужно чтобы были доступны еще и библиотеки самого MySQL.


Название: Re: Qt Mysql
Отправлено: stanukih от Октябрь 14, 2015, 09:29
Сам MySQL установлен. Что нужно чтоб они были доступны?


Название: Re: Qt Mysql
Отправлено: PimenS от Октябрь 14, 2015, 09:31
Система какая?


Название: Re: Qt Mysql
Отправлено: stanukih от Октябрь 14, 2015, 09:34
windows 7 x64


Название: Re: Qt Mysql
Отправлено: PimenS от Октябрь 14, 2015, 09:37
Пропиши в path путь до библиотек MySql


Название: Re: Qt Mysql
Отправлено: stanukih от Октябрь 14, 2015, 09:43
Добавил C:\Program Files\MySQL\MySQL Server 5.5\bin;C:\Program Files\MySQL\MySQL Server 5.5\include
Результат 0.


Название: Re: Qt Mysql
Отправлено: PimenS от Октябрь 14, 2015, 09:53
а до lib?


Название: Re: Qt Mysql
Отправлено: stanukih от Октябрь 14, 2015, 12:43
Добавил, а ничего не поменялось. Может проблема в том что mysql x64, а компилятор mingw x32?


Название: Re: Qt Mysql
Отправлено: Hellraiser от Октябрь 14, 2015, 13:19
В системе должны быть установлены клиентские библиотеки (DLL, а не LIB!) той же битности, что и сама программа! Битность сервера программе до фонаря.


Название: Re: Qt Mysql
Отправлено: stanukih от Октябрь 29, 2015, 06:41
Проблема не решена. Еще раз вся информация:

Windows 7 x64
Qt 5.5
Компилятор mingw 4.9.2


Код:

QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL", "test");
MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
   qDebug()<<db.driver();
}

выдает:
QSqlDatabase: QMYSQL driver not loaded
QSqlDatabase: available drivers: QSQLITE QMYSQL QMYSQL3 QODBC QODBC3 QPSQL QPSQL7
QSqlDatabase: an instance of QCoreApplication is required for loading driver plugins
QSqlDriver(0x679810cc)

То есть драйвер mysql доступен.

Код:

QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL", "test");
MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
        db.setDatabaseName("test");
        db.setUserName("root");
        db.setPassword("9379992");
        db.setHostName("127.0.0.1");
        if (!db.open())
            qDebug()<<"Ups"<< db.lastError();
        else
            qDebug()<<"Ok";
    ui->setupUi(this);
}

выдает
QSqlDatabase: QMYSQL driver not loaded
QSqlDatabase: available drivers: QSQLITE QMYSQL QMYSQL3 QODBC QODBC3 QPSQL QPSQL7
QSqlDatabase: an instance of QCoreApplication is required for loading driver plugins
Ups QSqlError("", "Driver not loaded", "Driver not loaded")

Драйвер mysql не загружен.

Куда копать? Пересобирать драйвер, прописывать пути или еще чего?


Название: Re: Qt Mysql
Отправлено: stanukih от Октябрь 29, 2015, 06:47
Что самое обидное идентичный код с sqlite работает. А плагин есть и того и другого..


Название: Re: Qt Mysql
Отправлено: PimenS от Октябрь 29, 2015, 10:41
Windows 7 x64
Qt 5.5 mingw 4.9.2

MySql 5.5 32bit, в path прописан путь до libmysql.dll.

все работает без проблем


Название: Re: Qt Mysql
Отправлено: stanukih от Октябрь 30, 2015, 06:55
Прописал этот путь в path. Теперь новая приколюха - откомпилированные проект (из примеров qt sqlbrowser) работает. А если запускаю из среды - ctrl+r пишет что драйвер не запущен. Как свой проект дебажить то?


Название: Re: Qt Mysql
Отправлено: stanukih от Октябрь 30, 2015, 07:09
Тему можно закрыть проблема решена простым киданием dll в папку. Похоже изначально проблема была что dll были под х64. Всем спасибо.