Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Снова про MySQL и QT под Windows
Форум на CrossPlatform.RU > Библиотеки > Qt > Qt Разработка баз данных
Лёшка
Помогите с драйверами на MySQL под QT. Пробовал собирать сам все получается, но их QT не видит
Litkevich Yuriy
Цитата(Лёшка @ 31.3.2010, 13:09) *
все получается, но их QT не видит
это как понимать?
Лёшка
Цитата(Litkevich Yuriy @ 31.3.2010, 10:55) *
все получается, но их QT не видит
это как понимать?

После сборки драйверов они появляются в папке \plugins\sqldrivers\ появились файлы: libqsqlmysqld4.a, qsqlmysqld4.dll, libqsqlmysql4.a,
qsqlmysql4.dll, но при попытке соединения с базой выдается ошибка что драйвер не найден ((
Litkevich Yuriy
Цитата(Лёшка @ 31.3.2010, 15:07) *
но при попытке соединения
при этой попытке в окружении (переменная PATH), путь к dll'кам самого мускуля есть?
Лёшка
Цитата(Litkevich Yuriy @ 31.3.2010, 18:19) *
Цитата(Лёшка @ 31.3.2010, 15:07) *
но при попытке соединения
при этой попытке в окружении (переменная PATH), путь к dll'кам самого мускуля есть?

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

Из QT Creator, собственно в нем и видно сообщения об ошибке
Litkevich Yuriy
Цитата(Лёшка @ 1.4.2010, 17:32) *
QT Creator
в креаторе с левой панели есть кнопка для настройки проекта, щёлкнув по которой открывается окно с кучей настроек, там должна быть настройка окружения запуска, в ней можно редактировать переменную PATH, посмотри есть ли там путь до <path/to/MySQL>/bin если нет, то добавь сам
molchanoviv
Лучше переместить длл-ки в папку с программой. Ибо как показывает мой опыт это не всегда работает.
Лёшка
Цитата(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, 11:29) *
Как решить эту проблему??? Может dll`ки какие надо положить к исполняемому файлу???
те же, что и нужны были на твоей машине. Возьми Dependency Walker, запусти в нём свою программу и посмотри какие dll'ки тянет твоё приложение из каталогов MinGW, Qt, MySQL

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

Ну и не забудь прочитать: Как распространять программы использующие Qt в MS Windows?

Спасибо за совет думаю теперь разберусь.
А в какой теме мне можно посмотреть о проблемах с кодировкой при работе с базой данных MySQL?
У меня при вводе в моем приложении кирилических записей ивыполнении запроса появляется ошибка
"Incorrect string value: '\xD0\xB9' for column 'firstname' at row 1 QMYSQL3: Unable to execute statement"
Litkevich Yuriy
int main(int argc, char *argv[])
{

    QApplication app(argc, argv);

    // Устанавливаем кодеки
    QTextCodec::setCodecForCStrings(QTextCodec::codecForLocale());
    // Для функций перевода tr() должно соответствовать кодировке исходников
    QTextCodec::setCodecForTr(QTextCodec::codecForName("UTF-8"));
...
}
Лёшка
Думал больше не буду возвращаться к этой теме, но пришлось. После сборки моего прооекта и размещиния в одном каталоге с исполняемым файлом всех нужных dll`ок, мое приложение при запуске на другом ПК всеравно ругается что нет нужного SQL драйвера(в моем случае MYSQL), dll`ку из папки бин сервера MYSQL тоже положил к исполняемому файлу. В чем проблема объясните?
Litkevich Yuriy
кэш плагинов, в реестре, почистил?
BRE
А сам драйвер из plugins копируешь?
Лёшка
Цитата(Litkevich Yuriy @ 15.4.2010, 12:48) *
кэш плагинов, в реестре, почистил?

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

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

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

В папке с исполняемым файлом, ты создал папку sqldrivers и скопировал туда сам драйвер? Все так сделал? ;)
Litkevich Yuriy
Цитата(Лёшка @ 15.4.2010, 16:00) *
Нет, как это сделать? И на каком компьюторе, на том на котором собираю свое приложение???
на котором запускашь: Кэш подключаемых модулей
Лёшка
Цитата(BRE @ 15.4.2010, 13:06) *
Цитата(Лёшка @ 15.4.2010, 13:00) *
Да скопировал, а толку нет

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

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

Троли сломали всё нахрен в модуле QtSQL начиная с версии Qt 4.5 при этом целились кудато в поддержку мускула через QODBC, сломали firebird и всё остальное. Вплоть до Qt 4.7 не работает. Есть только обходные пути, и для каждой версии свои
neneTc
Имена всех таблиц в нижнем регистре, запросы работают любые (в нижнем поле). Подскажите пожалуйста как мне правильно открыть подключение к MySQL. Может я что не так делаю?
    db=QSqlDatabase::addDatabase("QMYSQL", "DataServer");
    db.setHostName(gHost);
    db.setUserName(gUser);
    db.setPassword(gPass);
    db.setPort(gPort);
    if(db.open())
    {
        //...
    }
    //...
Litkevich Yuriy
Цитата(neneTc @ 12.5.2010, 14:54) *
процедура QSqlDatabase::open() не выполняется (ну т.е. возвращает false)
а что возвращает
db.lastError().text();
?
neneTc
Can't connect to MySQL server on '<адрес>' (10061) QMYSQL: Unable to connect
Лёшка
Цитата(neneTc @ 12.5.2010, 11:54) *
пробовал пересобирать Qt с поддержкой MySQL там сыпались ошибки сначала с WebKit, потом с какими-то скриптами, решил собрать MinGW

Мне интересно зачем пересобирать Qt с поддержкой мускула??? У меня тоже были проблемы при работе с мускулом, но они решились и без пересборки QT, собирал только драйвер и все.
neneTc
Лёшка, ну после неудачных пересборок я собирал только плагин)
neneTc
Litkevich Yuriy, большое спасибо за помощь! проблема была исключительно в невнимательности. После устранения проблемы всё зафурыкало=)
molchanoviv
Цитата(Litkevich Yuriy @ 12.5.2010, 12:21) *
сломали firebird и всё остальное. Вплоть до Qt 4.7 не работает.


Qt 4.6.0 + Firebird 2 под Windows. Все работает.
Litkevich Yuriy
Цитата(molchanoviv @ 13.5.2010, 14:22) *
Qt 4.6.0 + Firebird 2 под Windows. Все работает.
а ты имена идентификаторов в БД сделай разного регистра
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Форум IP.Board © 2001-2024 IPS, Inc.