Версия для печати темы
Форум на 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'кам самого мускуля есть?

надо посмотреть, но что то мне подсказывает что нету.
А после добавления пути в (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 если нет, то добавь сам

Сасибо Litkevich Yuriy заработало!!!
Только при запуске моего приложения на другом компьютере оно говорит что нет драйвера
Как решить эту проблему??? Может 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 и скопировал туда сам драйвер? Все так сделал?


спасибо большое заработало. Раньше драйвера просто кидал прям к исполняемому файлу
Автор: 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)