Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум на CrossPlatform.RU _ Qt Разработка баз данных _ Снова про MySQL и QT под Windows

Автор: Лёшка 31.3.2010, 9:09

Помогите с драйверами на MySQL под QT. Пробовал собирать сам все получается, но их QT не видит

Автор: Litkevich Yuriy 31.3.2010, 9:55

Цитата(Лёшка @ 31.3.2010, 13:09) *
все получается, но их QT не видит
это как понимать?

Автор: Лёшка 31.3.2010, 11:07

Цитата(Litkevich Yuriy @ 31.3.2010, 10:55) *
все получается, но их QT не видит
это как понимать?

После сборки драйверов они появляются в папке \plugins\sqldrivers\ появились файлы: libqsqlmysqld4.a, qsqlmysqld4.dll, libqsqlmysql4.a,
qsqlmysql4.dll, но при попытке соединения с базой выдается ошибка что драйвер не найден ((

Автор: Litkevich Yuriy 31.3.2010, 17:19

Цитата(Лёшка @ 31.3.2010, 15:07) *
но при попытке соединения
при этой попытке в окружении (переменная PATH), путь к dll'кам самого мускуля есть?

Автор: Лёшка 1.4.2010, 11:06

Цитата(Litkevich Yuriy @ 31.3.2010, 18:19) *
Цитата(Лёшка @ 31.3.2010, 15:07) *
но при попытке соединения
при этой попытке в окружении (переменная PATH), путь к dll'кам самого мускуля есть?

:scratch_one-s_head: надо посмотреть, но что то мне подсказывает что нету.
А после добавления пути в (PATH) нужно еще что то делать

Автор: Litkevich Yuriy 1.4.2010, 13:15

Цитата(Лёшка @ 1.4.2010, 15:06) *
надо посмотреть, но что то мне подсказывает что нету.
та программу как запускаешь? Из проводника виндовс или IDE (какой)?

Автор: Лёшка 1.4.2010, 13:32

Цитата(Litkevich Yuriy @ 1.4.2010, 14:15) *
Цитата(Лёшка @ 1.4.2010, 15:06) *
надо посмотреть, но что то мне подсказывает что нету.
та программу как запускаешь? Из проводника виндовс или IDE (какой)?

Из QT Creator, собственно в нем и видно сообщения об ошибке

Автор: Litkevich Yuriy 1.4.2010, 13:44

Цитата(Лёшка @ 1.4.2010, 17:32) *
QT Creator
в креаторе с левой панели есть кнопка для настройки проекта, щёлкнув по которой открывается окно с кучей настроек, там должна быть настройка окружения запуска, в ней можно редактировать переменную PATH, посмотри есть ли там путь до <path/to/MySQL>/bin если нет, то добавь сам

Автор: molchanoviv 1.4.2010, 21:32

Лучше переместить длл-ки в папку с программой. Ибо как показывает мой http://www.forum.crossplatform.ru/index.php?showtopic=4344 это не всегда работает.

Автор: Лёшка 2.4.2010, 7:29

Цитата(Litkevich Yuriy @ 1.4.2010, 14:44) *
Цитата(Лёшка @ 1.4.2010, 17:32) *
QT Creator
в креаторе с левой панели есть кнопка для настройки проекта, щёлкнув по которой открывается окно с кучей настроек, там должна быть настройка окружения запуска, в ней можно редактировать переменную PATH, посмотри есть ли там путь до <path/to/MySQL>/bin если нет, то добавь сам

:yahoo: Сасибо Litkevich Yuriy заработало!!!
Только при запуске моего приложения на другом компьютере оно говорит что нет драйвера :unknw:
Как решить эту проблему??? Может dll`ки какие надо положить к исполняемому файлу???

Автор: Litkevich Yuriy 2.4.2010, 9:43

Цитата(Лёшка @ 2.4.2010, 11:29) *
Как решить эту проблему??? Может dll`ки какие надо положить к исполняемому файлу???
те же, что и нужны были на твоей машине. Возьми Dependency Walker, запусти в нём свою программу и посмотри какие dll'ки тянет твоё приложение из каталогов MinGW, Qt, MySQL

Ну и не забудь прочитать: http://wiki.crossplatform.ru/index.php/Развертывание_приложений_Qt_в_MS_Windows

Автор: Лёшка 2.4.2010, 10:32

Цитата(Litkevich Yuriy @ 2.4.2010, 10:43) *
Цитата(Лёшка @ 2.4.2010, 11:29) *
Как решить эту проблему??? Может dll`ки какие надо положить к исполняемому файлу???
те же, что и нужны были на твоей машине. Возьми Dependency Walker, запусти в нём свою программу и посмотри какие dll'ки тянет твоё приложение из каталогов MinGW, Qt, MySQL

Ну и не забудь прочитать: http://wiki.crossplatform.ru/index.php/Развертывание_приложений_Qt_в_MS_Windows

Спасибо за совет думаю теперь разберусь.
А в какой теме мне можно посмотреть о проблемах с кодировкой при работе с базой данных MySQL?
У меня при вводе в моем приложении кирилических записей ивыполнении запроса появляется ошибка
"Incorrect string value: '\xD0\xB9' for column 'firstname' at row 1 QMYSQL3: Unable to execute statement"

Автор: Litkevich Yuriy 2.4.2010, 13:04

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

    QApplication app(argc, argv);

    // Устанавливаем кодеки
    QTextCodec::setCodecForCStrings(QTextCodec::codecForLocale());
    // Для функций перевода tr() должно соответствовать кодировке исходников
    QTextCodec::setCodecForTr(QTextCodec::codecForName("UTF-8"));
...
}

Автор: Лёшка 15.4.2010, 11:35

Думал больше не буду возвращаться к этой теме, но пришлось. После сборки моего прооекта и размещиния в одном каталоге с исполняемым файлом всех нужных dll`ок, мое приложение при запуске на другом ПК всеравно ругается что нет нужного SQL драйвера(в моем случае MYSQL), dll`ку из папки бин сервера MYSQL тоже положил к исполняемому файлу. В чем проблема объясните?

Автор: Litkevich Yuriy 15.4.2010, 11:48

кэш плагинов, в реестре, почистил?

Автор: BRE 15.4.2010, 11:52

А сам драйвер из plugins копируешь?

Автор: Лёшка 15.4.2010, 12:00

Цитата(Litkevich Yuriy @ 15.4.2010, 12:48) *
кэш плагинов, в реестре, почистил?

Нет, как это сделать? И на каком компьюторе, на том на котором собираю свое приложение???

Цитата(BRE @ 15.4.2010, 12:52) *
А сам драйвер из plugins копируешь?

Да скопировал, а толку нет

Автор: BRE 15.4.2010, 12:06

Цитата(Лёшка @ 15.4.2010, 13:00) *
Да скопировал, а толку нет

В папке с исполняемым файлом, ты создал папку sqldrivers и скопировал туда сам драйвер? Все так сделал? ;)

Автор: Litkevich Yuriy 15.4.2010, 12:15

Цитата(Лёшка @ 15.4.2010, 16:00) *
Нет, как это сделать? И на каком компьюторе, на том на котором собираю свое приложение???
на котором запускашь: http://doc.crossplatform.ru/qt/4.4.3/plugins-howto.html#the-plugin-cache

Автор: Лёшка 15.4.2010, 12:21

Цитата(BRE @ 15.4.2010, 13:06) *
Цитата(Лёшка @ 15.4.2010, 13:00) *
Да скопировал, а толку нет

В папке с исполняемым файлом, ты создал папку sqldrivers и скопировал туда сам драйвер? Все так сделал? ;)

:clapping: спасибо большое заработало. Раньше драйвера просто кидал прям к исполняемому файлу

Автор: neneTc 12.5.2010, 10:54

Здравствуйте! У меня немного иная проблема с MySQL(скачал 5.1.46 сервер с оффсайта) + QT 4.6.2 + Windows. Собрал MySQL драйвер (собрано mingw-utils 3.0, пробовал пересобирать Qt с поддержкой MySQL там сыпались ошибки сначала с WebKit, потом с какими-то скриптами, решил собрать MinGW), в папке <QTDIR>\plugins\sqldrivers наличиствуют файлы libqsqlmysql4.a libqsqlmysqld4.a qsqlmysql4.dll qsqlmysqld4.dll, драйвер видится в sqlbrowser (демо програмка, в папке <QTDIR>\demos\sqlbrowser), коннектится к локальному MySQL серверу, выдаёт список таблиц, при дабл-клике по любой таблице выдает "Unable to find table <имя таблицы>". В программке которую я писал процедура QSqlDatabase::open() не выполняется (ну т.е. возвращает false) и все запросы к серверу тут же прекращаются. Что делать? Помогите пожалуйста, очень надо доделать программку!

Автор: Litkevich Yuriy 12.5.2010, 11:21

Цитата(neneTc @ 12.5.2010, 14:54) *
Unable to find table <имя таблицы>"
как имя таблицы указано в БД, большими или маленькими буквами?
Попробуй в демке сделать запрос к таблице руками (в нижнем поле). Поэксперементируй с регистром.

Троли сломали всё нахрен в модуле QtSQL начиная с версии Qt 4.5 при этом целились кудато в поддержку мускула через QODBC, сломали firebird и всё остальное. Вплоть до Qt 4.7 не работает. Есть только обходные пути, и для каждой версии свои

Автор: neneTc 12.5.2010, 11:40

Имена всех таблиц в нижнем регистре, запросы работают любые (в нижнем поле). Подскажите пожалуйста как мне правильно открыть подключение к MySQL. Может я что не так делаю?

    db=QSqlDatabase::addDatabase("QMYSQL", "DataServer");
    db.setHostName(gHost);
    db.setUserName(gUser);
    db.setPassword(gPass);
    db.setPort(gPort);
    if(db.open())
    {
        //...
    }
    //...

Автор: Litkevich Yuriy 12.5.2010, 11:47

Цитата(neneTc @ 12.5.2010, 14:54) *
процедура QSqlDatabase::open() не выполняется (ну т.е. возвращает false)
а что возвращает
db.lastError().text();
?

Автор: neneTc 12.5.2010, 11:51

Can't connect to MySQL server on '<адрес>' (10061) QMYSQL: Unable to connect

Автор: Лёшка 12.5.2010, 12:53

Цитата(neneTc @ 12.5.2010, 11:54) *
пробовал пересобирать Qt с поддержкой MySQL там сыпались ошибки сначала с WebKit, потом с какими-то скриптами, решил собрать MinGW

Мне интересно зачем пересобирать Qt с поддержкой мускула??? У меня тоже были проблемы при работе с мускулом, но они решились и без пересборки QT, собирал только драйвер и все.

Автор: neneTc 12.5.2010, 13:08

Лёшка, ну после неудачных пересборок я собирал только плагин)

Автор: neneTc 12.5.2010, 14:43

Litkevich Yuriy, большое спасибо за помощь! проблема была исключительно в невнимательности. После устранения проблемы всё зафурыкало=)

Автор: molchanoviv 13.5.2010, 10:22

Цитата(Litkevich Yuriy @ 12.5.2010, 12:21) *
сломали firebird и всё остальное. Вплоть до Qt 4.7 не работает.


Qt 4.6.0 + Firebird 2 под Windows. Все работает.

Автор: Litkevich Yuriy 13.5.2010, 12:58

Цитата(molchanoviv @ 13.5.2010, 14:22) *
Qt 4.6.0 + Firebird 2 под Windows. Все работает.
а ты имена идентификаторов в БД сделай разного регистра

Форум Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)