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

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

Страниц: 1 2 [3] 4   Вниз
  Печать  
Автор Тема: mysql driver not loaded  (Прочитано 57020 раз)
aviabunin
Гость
« Ответ #30 : Август 01, 2011, 11:02 »

Похожая ошибка - dump во вложении.
Может кто подскажет в чем дело?
Спасибо!
Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #31 : Август 01, 2011, 11:06 »

Компилятор не находит.
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
LisandreL
Птица говорун
*****
Offline Offline

Сообщений: 984


Надо улыбаться


Просмотр профиля
« Ответ #32 : Август 01, 2011, 11:22 »

1) Слэши в параметрах в другую сторону.
2) Запускайте не просто из командной строки, а из «Qt 4.7.3 for Desktop (MinGW)» (Пуск/Все программы/Qt SDK/Desktop/Qt 4.7.3 for Desktop (MinGW)) - там уже пути прописаны.
Записан
iks
Гость
« Ответ #33 : Август 01, 2011, 11:37 »

Недавно переустановился на винде, так поступил проще, скачал Qt SDK, а так-же mysql....msi нормально без танцев поставил их, подкинул драйвер C:\Qt\bin\sqldrivers\libmysql.dll и все нормально работаю.
Может поможет.
« Последнее редактирование: Август 01, 2011, 11:43 от iks » Записан
aviabunin
Гость
« Ответ #34 : Август 02, 2011, 08:04 »

Пробовал вчера в Qt SDK  пересобрать пакет для драйвера, но так и не справился с ошибками - см во вложении. Главная проблема в пути к libmysql.lib не воспринимает пробелы - слэши менял, но не помогло ессно пока с пробелами не ясно
Записан
iks
Гость
« Ответ #35 : Август 02, 2011, 08:56 »

Давно говорится что ставить желательно пути без пробелов, или попробуйте путь взять в "C:\Program Files\..." может помочь. Но помойму проще будет MySQL переставить C:\MySQL, или без этих бубнов скопируйте файл libmysql.dll в C:\QtSDK\...\bin\sqldrivers, ну и последний вариант который приходит в голову это добавит в реестр
« Последнее редактирование: Август 02, 2011, 09:18 от iks » Записан
aviabunin
Гость
« Ответ #36 : Август 02, 2011, 10:30 »

По поводу просто прописать libmysql.lib  в соответствующий каталог - сомнительно, т.к. не известно где это вылезет и когда. Насчет обратных слэшей в параметрах - согласен. Одна проблема осталась - пробелы в Program Files и MySQL\MySQL server 5.5  - победить не удается - хоть из командной строки запускай, хоть из QtSDK\Desktop(MinGw). Пока вижу один выход - переставить MySQL в C:\mysql . И ждать пока кто-нибудь просветить насчет пробелов. Надо бы найти форум разработчиков Qt . Попробую на эту тему отдельные ветки  на сайтах запустить
Записан
iks
Гость
« Ответ #37 : Август 02, 2011, 11:26 »

Выше я не просто написал путь а взял его в "", можно попробовать "LIB += \"ваш путь\"", по поводу того что где это вылезет и когда, так по любому если вы будете распространять свою софтину, то в папку с бинарником проще подкинуть sqldrivers\libmysql.dll
« Последнее редактирование: Август 02, 2011, 11:30 от iks » Записан
aviabunin
Гость
« Ответ #38 : Август 02, 2011, 12:18 »

Все получилось после того как путь заключил в  одинарные кавычки ' ...  '   и поставил обратные слэши.
Т.е. просто открываем проект по сборке mysql (C:\QtSDK\QtSources\4.7.3\src\plugins\sqldrivers\mysq\mysql.prol)  и правим пути на вкладке параметров сборки, собираем. Затем 4 файла, указанные на 2 вложении (по 2 файла из debug и release) переписываем в тот же каталог , который указан во втором вложении.
Затем не забываем в файле проекта дописать QT += sql и можно пользоваться MySQL.
Всем спасибо!
Записан
aviabunin
Гость
« Ответ #39 : Август 07, 2011, 21:45 »

Но вот запустить приложение и использованием не удается. Получаю сообщение в ходе отладки -

Цитировать
Запускается D:\QT\monitor-build-desktop\debug\monitor.exe...

("QSQLITE", "QMYSQL3", "QMYSQL")
Connected
"Driver not loaded Driver not loaded"
QSqlQuery::exec: database not open
0  
Вот текст программы main.cpp
Код:
#include <QtGui/QApplication>
#include "mainwindow.h"
#include <QtSql>
#include <qsqldatabase.h>
#include <QDebug>


int main(int argc, char *argv[])
{
    QSqlQuery query;

    QApplication a(argc, argv);


    MainWindow w;

    a.addLibraryPath( "./" );

    QSqlDatabase db  = QSqlDatabase::addDatabase("QMYSQL");
    qDebug() << QSqlDatabase::drivers();


     db.setHostName("localhost");
     db.setDatabaseName("db1");
     db.setUserName("root");
     db.setPassword("Djkjlz1");

     if (!db.open()) {

             qDebug() << "Error connecting";
             return 1;
             } else {
                qDebug() << "Connected";
             }

     if(!query.isActive())
          qDebug()<< query.lastError().text();

    query.exec("SELECT name FROM region");
...
и вот moninor.pro
Код:
QT       += core gui

TARGET = monitor
TEMPLATE = app

SOURCES += main.cpp\
        mainwindow.cpp

HEADERS  += mainwindow.h

QT += sql

FORMS    += mainwindow.ui
Драйвер вроде собрался нормально, о чем говорит первая запись в окне вывода -
("QSQLITE", "QMYSQL3", "QMYSQL")
Соnnected.

Чего не хватает ?



« Последнее редактирование: Август 07, 2011, 21:53 от aviabunin » Записан
LisandreL
Птица говорун
*****
Offline Offline

Сообщений: 984


Надо улыбаться


Просмотр профиля
« Ответ #40 : Август 08, 2011, 00:52 »

query.isActive до exec'а? Шокированный

Попробуйте так:
Цитировать
#include <QtGui/QApplication>
#include "mainwindow.h"
#include <QtSql>
#include <qsqldatabase.h>
#include <QDebug>


int main(int argc, char *argv[])
{
    QSqlQuery query;

    QApplication a(argc, argv);


    MainWindow w;

    a.addLibraryPath( "./" );

    QSqlDatabase db  = QSqlDatabase::addDatabase("QMYSQL");
    qDebug() << QSqlDatabase::drivers();


     db.setHostName("localhost");
     db.setDatabaseName("db1");
     db.setUserName("root");
     db.setPassword("Djkjlz1");

     if (!db.open()) {
         qDebug() << "Error connecting";
         return 1;
     }
     else {
       qDebug() << "Connected";
    }

   if(!query.isActive())
          qDebug()<< query.lastError().text();


   QSqlQuery query( db );
    if ( !query.exec("SELECT name FROM region") ) {
        qDebug()<< query.lastError().text();
        return 1;
    }

    ...

P.S. Ну и порт лучше поставить, даже если он дефолтный.
« Последнее редактирование: Август 08, 2011, 00:55 от LisandreL » Записан
aviabunin
Гость
« Ответ #41 : Август 08, 2011, 07:30 »

Спасибо, огромное! Все заработало.
1. Кроме того, что в коде прописано ---
в monitor.pro:
Код:
QT += sql
в main.cpp:
Код:
#include <QtSql>
#include <qsqldatabase.h>
...
    QSqlDatabase db  = QSqlDatabase::addDatabase("QMYSQL");
Где нужно положить библиотеку libmysql.dll или каким образом прописать путь к ней.
А то я на всякий случай положил во многих местах.
2. Сгенерированные драйвера MySQL  я разместил в каталоге C:\QtSDK\Desktop\Qt\4.7.3\mingw\plugins\sqldrivers
А если приложение не desktop? а, например, приложение для Symbian - где должны быть драйвера libqsqlmysql4.a и
qsqlmysql4.dll ...?
Как разобраться со структурой каталогов в C:\QtSDK? Какое назначение каталогов -
C:\QtSDK\mingw
C:\QtSDK\Symbian?
3. Видел ссылку (к сожалению не действующую на программу, которая позволяет определить
где и что ищет компоновщик , что не может найти)
Цитировать
Открой для себя волшебную утилиту http://www.dependencywalker.com/
Она точно скажет какие dll нужны и где система их сейчас видит.
Но она не поможет на динамически загружаемых библиотеках (в смысле плагинах).
Это с адреса - http://www.sql.ru/forum/actualthread.aspx?tid=745985
Записан
blakvoron
Гость
« Ответ #42 : Сентябрь 08, 2011, 19:34 »

Народ, я начинающий программист, так что сильно не пинайте.
я подключил библиотеки:
#include <QtSql/mysql.h>
#include <QtSql/qsqldatabase.h>
#include <qDebug>

Капнул из SQL mysql.h и ещё кучу файлов, что попросил вмести с ним
А дальше при каждой попытке вызова QSqlDatabase вываливается по 5 ошибок типа:

undefined reference to '_imp__ZN12QSqlDatabaseC1Ev'

может кто подскажет, с чем это может быть связано?
Записан
Даниил
Гость
« Ответ #43 : Сентябрь 09, 2011, 08:42 »

В .pro файл допиши:
Код:
QT += sql
Возникновение таковой  конструкции, свидетельствует о том, что ты не подключил модуль в .pro файл.
Записан
blakvoron
Гость
« Ответ #44 : Сентябрь 09, 2011, 20:15 »

Огромное спасибо...)))
Записан
Страниц: 1 2 [3] 4   Вверх
  Печать  
 
Перейти в:  


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