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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Qt Mysql  (Прочитано 6562 раз)
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")

Вопрос почему он не загружает драйвер? Ведь последняя строка говорит что он есть.
« Последнее редактирование: Октябрь 14, 2015, 09:02 от stanukih » Записан
PimenS
Крякер
****
Offline Offline

Сообщений: 371


Просмотр профиля
« Ответ #1 : Октябрь 14, 2015, 09:27 »

Для работы QMYSQL нужно чтобы были доступны еще и библиотеки самого MySQL.
Записан
stanukih
Гость
« Ответ #2 : Октябрь 14, 2015, 09:29 »

Сам MySQL установлен. Что нужно чтоб они были доступны?
Записан
PimenS
Крякер
****
Offline Offline

Сообщений: 371


Просмотр профиля
« Ответ #3 : Октябрь 14, 2015, 09:31 »

Система какая?
Записан
stanukih
Гость
« Ответ #4 : Октябрь 14, 2015, 09:34 »

windows 7 x64
Записан
PimenS
Крякер
****
Offline Offline

Сообщений: 371


Просмотр профиля
« Ответ #5 : Октябрь 14, 2015, 09:37 »

Пропиши в path путь до библиотек MySql
Записан
stanukih
Гость
« Ответ #6 : Октябрь 14, 2015, 09:43 »

Добавил C:\Program Files\MySQL\MySQL Server 5.5\bin;C:\Program Files\MySQL\MySQL Server 5.5\include
Результат 0.
Записан
PimenS
Крякер
****
Offline Offline

Сообщений: 371


Просмотр профиля
« Ответ #7 : Октябрь 14, 2015, 09:53 »

а до lib?
Записан
stanukih
Гость
« Ответ #8 : Октябрь 14, 2015, 12:43 »

Добавил, а ничего не поменялось. Может проблема в том что mysql x64, а компилятор mingw x32?
Записан
Hellraiser
Бывалый
*****
Offline Offline

Сообщений: 451


Просмотр профиля
« Ответ #9 : Октябрь 14, 2015, 13:19 »

В системе должны быть установлены клиентские библиотеки (DLL, а не LIB!) той же битности, что и сама программа! Битность сервера программе до фонаря.
Записан
stanukih
Гость
« Ответ #10 : Октябрь 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 не загружен.

Куда копать? Пересобирать драйвер, прописывать пути или еще чего?
Записан
stanukih
Гость
« Ответ #11 : Октябрь 29, 2015, 06:47 »

Что самое обидное идентичный код с sqlite работает. А плагин есть и того и другого..
Записан
PimenS
Крякер
****
Offline Offline

Сообщений: 371


Просмотр профиля
« Ответ #12 : Октябрь 29, 2015, 10:41 »

Windows 7 x64
Qt 5.5 mingw 4.9.2

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

все работает без проблем
Записан
stanukih
Гость
« Ответ #13 : Октябрь 30, 2015, 06:55 »

Прописал этот путь в path. Теперь новая приколюха - откомпилированные проект (из примеров qt sqlbrowser) работает. А если запускаю из среды - ctrl+r пишет что драйвер не запущен. Как свой проект дебажить то?
Записан
stanukih
Гость
« Ответ #14 : Октябрь 30, 2015, 07:09 »

Тему можно закрыть проблема решена простым киданием dll в папку. Похоже изначально проблема была что dll были под х64. Всем спасибо.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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