Название: Qt 5.0.1 MySQL-problems Отправлено: Leopold от Июнь 15, 2013, 13:17 Доброго времени суток. Прежде чем задавать вопросы, я поискал ответы на форуме, но темы с ответами либо мертвы, либо отсутствуют. И сразу предупреждаю, знания о Qt и Cpp весьма поверхностны. Имеется всего два вопроса:
1)Есть самостоятельно собранный по инструкции драйвер MySQL. Собралось две .dll: qsqlmysqld.dll(я так понял, что это debag) и qsqlmysql.dll(а это, видимо, release). В сборке проекта debug всё работает нормально, а release сборка драйвер не подгружает. Пробовал кидать эти 2 библиотеки в каталог sqldrivers (который предварительно создал) в каталоге с программой и непосредственно в каталог программы, libmySQL.dll тоже кидал в каталог программы, пробовал и реестр чистить (HKEY_CURRENT_USER\Software\Trolltech), но никаких результатов это не дало. Очень нужна release сборка. 2)В приведенном ниже куске кода я пытаюсь прочитать все записи таблицы guests, записав их в QTableWidget. Потом я пытаюсь прочитать записи из другой таблицы, используя записанные ранее данные, но второй запрос возвращает ошибку. Помогите найти ошибку, может в синтаксисе MySQL что-то не так? Я сравнивал с примерами и ошибки не находил. Код: void MainWindow::on_refreshClient_clicked() Вывод приложения: Код: QSqlQuery::value: not positioned on a valid record Заранее благодарю за ваше внимание и прошу о помощи. Название: Re: Qt 5.0.1 MySQL-problems Отправлено: _OLEGator_ от Июнь 15, 2013, 13:22 Необходимо в папку sqldrivers положить только релизный драйвер.
Название: Re: Qt 5.0.1 MySQL-problems Отправлено: Leopold от Июнь 15, 2013, 13:26 Необходимо в папку sqldrivers положить только релизный драйвер. Сделал то, что вы написали, но драйвер всё еще не погружается. Я и проект пересобрал, но не помогло.Название: Re: Qt 5.0.1 MySQL-problems Отправлено: Hellraiser от Июнь 15, 2013, 13:29 По второму вопросу: после exec надо позиционировать курсор на запись, используя методы next(), first() и т.п.
Название: Re: Qt 5.0.1 MySQL-problems Отправлено: Leopold от Июнь 15, 2013, 14:22 По второму вопросу: после exec надо позиционировать курсор на запись, используя методы next(), first() и т.п. Прошу прощения, но не могли бы вы объяснить подробнее или дать ссылку на источник? Пожалуйста. Я попробовал сделать так, как нашел в примерах, но результат тот же.Название: Re: Qt 5.0.1 MySQL-problems Отправлено: Hellraiser от Июнь 15, 2013, 14:39 В качестве источника надо пользоваться документацией, там этот вопрос специально оговорен (http://qt-project.org/doc/qt-5.0/qtsql/qsqlquery.html#exec) во втором абзаце.
Название: Re: Qt 5.0.1 MySQL-problems Отправлено: lit-uriy от Июнь 15, 2013, 15:20 при запуске приложения, чтобы подгружался драйвер, нужно чтобы зависимые библиотеки были видны приложению.
Т.е. MySQL должен быть виден через переменную окружения PATH при запуске программы. Название: Re: Qt 5.0.1 MySQL-problems Отправлено: Leopold от Июнь 16, 2013, 11:56 В качестве источника надо пользоваться документацией, там этот вопрос специально оговорен (http://qt-project.org/doc/qt-5.0/qtsql/qsqlquery.html#exec) во втором абзаце. Спасибо, я почитал и у меня всё получилось. :) Впредь, буду пользоваться этой документацией. при запуске приложения, чтобы подгружался драйвер, нужно чтобы зависимые библиотеки были видны приложению. Т.е. MySQL должен быть виден через переменную окружения PATH при запуске программы. Я добавил в эту переменную путь относительно файла запуска, т.е. \\sqldrivers . Но оно не работает. Поисковик кидает меня на статьи про компиляцию Qt'a. :( Название: Re: Qt 5.0.1 MySQL-problems Отправлено: _OLEGator_ от Июнь 16, 2013, 12:24 mysql-драйвер для Qt тянет за собой и dll mysql - вот путь к ним должен быть доступен через PATH, а не путь к файлу запуска или sqldrivers. Драйвер при запуске не скажет тебе о недостающих dll, а просто не заработает и не будет доступен в приложении.
Название: Re: Qt 5.0.1 MySQL-problems Отправлено: Leopold от Июнь 16, 2013, 12:50 mysql-драйвер для Qt тянет за собой и dll mysql - вот путь к ним должен быть доступен через PATH, а не путь к файлу запуска или sqldrivers. Драйвер при запуске не скажет тебе о недостающих dll, а просто не заработает и не будет доступен в приложении. Путь к C:\MySQL\lib\opt у меня уже был указан, libmysql.dll лежала в корне и в папке windows, путь к которой тоже есть в переменной PATH, а к папке sqldrivers путь указывать не нужно. Но файлов с MySQL связанных я не знаю, почему тогда не работает? Название: Re: Qt 5.0.1 MySQL-problems Отправлено: lit-uriy от Июнь 16, 2013, 13:35 Скачай Dependency Walker (http://www.dependencywalker.com/), открой в нём своё приложение и запусти его (п. меню Profile) он покажет, есть ли какие-то не достающие зависимости
Название: Re: Qt 5.0.1 MySQL-problems Отправлено: Leopold от Июнь 16, 2013, 15:34 Скачай Dependency Walker (http://www.dependencywalker.com/), открой в нём своё приложение и запусти его (п. меню Profile) он покажет, есть ли какие-то не достающие зависимости Скачал, сделал как вы написали. Судя по всему библиотека mysql вроде подгружается, не подгружается ряд других библиотек. Еще я увидел какую-то ошибку связанную с QSQLMYSQL.DLL. Прилагаю скрин, т.к. сам ни черта не пойму.EDIT: Я вот еще подумал, может стоит их как-то подключить через .pro файл? Название: Re: Qt 5.0.1 MySQL-problems Отправлено: Leopold от Июнь 17, 2013, 17:41 Господа, пожалуйста, любые идеи. Послезавтра защита, а я даже программу не смогу продемонстрировать.
Название: Re: Qt 5.0.1 MySQL-problems Отправлено: lit-uriy от Июнь 17, 2013, 19:15 1) открывай командную строку виндовоза
2) path вывод команды клади сюда, будем по шагам посмотреть Название: Re: Qt 5.0.1 MySQL-problems Отправлено: Leopold от Июнь 17, 2013, 19:31 1) открывай командную строку виндовоза 2) path вывод команды клади сюда, будем по шагам посмотреть PATH=C:\Program Files\NVIDIA Corporation\PhysX\Common;%CommonProgramFiles%\Microsoft Shared\Windows Live;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\Program Files\Universal Extractor;C:\Program Files\Universal Extractor\bin;C:\Program Files\Borland\Delphi7\Bin;C:\Program Files\Borland\Delphi7\Projects\Bpl;C:\Program Files\Common Files\Microsoft Shared\Windows Live;D:\Qt\Qt5.0.1\5.0.1\mingw47_32\bin;D:\Qt\Qt5.0.1\Tools\MinGW\bin;D:\QtProjects\ikar-build-Desktop_Qt_5_0_1_MinGW_32bit-______\release\sqldrivers Название: Re: Qt 5.0.1 MySQL-problems Отправлено: lit-uriy от Июнь 17, 2013, 20:36 MySQL не вижу.
делай bat-файл с таким содержимым: set MYSQLPATH=path/to/mysql/bin set PATH=%PATH%;MYSQLPATH start path/to/myprogramm если путь к мускулю содержит пробелы, то возьми его в кавычки запусти этот bat-файл из командной строки, если что-то не заработает, то посмотри что печатается в командной строке Название: Re: Qt 5.0.1 MySQL-problems Отправлено: Leopold от Июнь 17, 2013, 20:55 set MYSQLPATH=path/to/mysql/bin Прошу прощения, bin? Т.е. путь прописывать непосредственно к серверу? У меня в каталоге Connector C++ каталога bin нет. Я использовал такие пути:set MYSQLPATH="C:\Program Files\MySQL\MySQL Server 5.6\bin" set PATH=%PATH%;MYSQLPATH start D:\QtProjects\ikar-build-Desktop_Qt_5_0_1_MinGW_32bit-______\release Библиотека всё еще не подключена, вот вывод комстроки: C:\>set MYSQLPATH="C:\Program Files\MySQL\MySQL Server 5.6\bin" C:\>set PATH=C:\Program Files\NVIDIA Corporation\PhysX\Common;%CommonProgramFiles%\Microsoft Shared\Windows Live;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\Program Files\Universal Extractor;C:\Program Files\Universal Extractor\bin;C:\Program Files\Borland\Delphi7\Bin;C:\Program Files\Borland\Delphi7\Projects\Bpl;C:\Program Files\Common Files\Microsoft Shared\Windows Live;D:\Qt\Qt5.0.1\5.0.1\mingw47_32\bin;D:\Qt\Qt5.0.1\Tools\MinGW\bin;D:\QtProjects\ikar-build-Desktop_Qt_5_0_1_MinGW_32bit-______\release\sqldrivers;MYSQLPATH;MYSQLPATH C:\>start D:\QtProjects\ikar-build-Desktop_Qt_5_0_1_MinGW_32bit-______\release\ikar.exe Название: Re: Qt 5.0.1 MySQL-problems Отправлено: lit-uriy от Июнь 17, 2013, 20:59 прошу прощения, строку:
set PATH=%PATH%;MYSQLPATH заменить на set PATH=%PATH%;%MYSQLPATH% MYSQLPATH - переменная, её надо в процентики заключить строку set MYSQLPATH не трогать, это только создаётся переменная (стал быть без процентов) Название: Re: Qt 5.0.1 MySQL-problems Отправлено: lit-uriy от Июнь 17, 2013, 21:00 >Прошу прощения, bin? Т.е. путь прописывать непосредственно к серверу?
да, если быть точнее к библиотекам которые лежат в этом каталоге. Название: Re: Qt 5.0.1 MySQL-problems Отправлено: Leopold от Июнь 17, 2013, 21:15 set PATH=%PATH%;MYSQLPATH Вывод изменился, но релиз по прежнему не работает. :-\заменить на set PATH=%PATH%;%MYSQLPATH% Название: Re: Qt 5.0.1 MySQL-problems Отправлено: lit-uriy от Июнь 17, 2013, 21:38 запусти отладочную версию черз bat-файл, что-нибудь в консоль пишет? работа с БД идёт?
Название: Re: Qt 5.0.1 MySQL-problems Отправлено: Leopold от Июнь 17, 2013, 21:54 запусти отладочную версию черз bat-файл, что-нибудь в консоль пишет? работа с БД идёт? Ничего не изменилось, я что-то не правильно сделал? Вывода в консоль нет, но работа с БД идет. Название: Re: Qt 5.0.1 MySQL-problems Отправлено: lit-uriy от Июнь 17, 2013, 22:22 посмотри есть ли в реестре в ветке HKEY_CURRENT_USER\Software\Trolltech\OrganizationDefaults
каталоги с именами типа Qt Plugin Cache 4.5.false Название: Re: Qt 5.0.1 MySQL-problems Отправлено: lit-uriy от Июнь 17, 2013, 22:30 1)И ещё, выкладывай свой pro-файл сюда.
2) что за зверя ты упоминал "Connector C++" где, как и зачем ты его используешь? Название: Re: Qt 5.0.1 MySQL-problems Отправлено: Leopold от Июнь 17, 2013, 23:22 посмотри есть ли в реестре в ветке HKEY_CURRENT_USER\Software\Trolltech\OrganizationDefaults Да есть, там 4.7 false и 4.8 false. А не могли бы вы объяснить что это за каталоги, если вам не сложно?каталоги с именами типа Qt Plugin Cache 4.5.false 1)И ещё, выкладывай свой pro-файл сюда. 2) что за зверя ты упоминал "Connector C++" где, как и зачем ты его используешь? 1)Кидаю весь проект 2)Был в комплекте с MySQL Community Server, и он, как я вспомнил, отношения к делу не имеет. В одной из моих первых попыток скомпилировать библиотеки mysql я пытался прописывать путь к нему. Название: Re: Qt 5.0.1 MySQL-problems Отправлено: lit-uriy от Июнь 18, 2013, 10:45 >>Да есть, там 4.7 false и 4.8 false. А не могли бы вы объяснить что это за каталоги, если вам не сложно?
это регистрация неудачных попыток загрузить плагины. подкаталоги представляют собой путь к приложениям, которые пытались загрузить плагины. Название: Re: Qt 5.0.1 MySQL-problems Отправлено: Leopold от Июнь 18, 2013, 18:52 это регистрация неудачных попыток загрузить плагины. Ясно, спасибо. Есть еще идеи, как мне показать ГЭКу завтра, что у меня есть программа? Может, мне как-то перенести с собой отладочные библиотеки и представить отладочную версию?подкаталоги представляют собой путь к приложениям, которые пытались загрузить плагины. Название: Re: Qt 5.0.1 MySQL-problems Отправлено: lit-uriy от Июнь 18, 2013, 19:20 можно и отладочную, просто бери dll-ки с буквой d
П.С. У меня на машине нет MySQL проверить проект нет возможности Название: Re: Qt 5.0.1 MySQL-problems Отправлено: Leopold от Июнь 18, 2013, 19:51 можно и отладочную, просто бери dll-ки с буквой d Но для debug-версии нужно больше, чем просто mysqld? Нужна среда Qt, если можно так выразится. Название: Re: Qt 5.0.1 MySQL-problems Отправлено: lit-uriy от Июнь 18, 2013, 22:03 а почему для release не нужно?
Название: Re: Qt 5.0.1 MySQL-problems Отправлено: Leopold от Июнь 18, 2013, 22:22 а почему для release не нужно? Я имею ввиду для работы, а не компиляции. Или для релиз версии тоже? Я просто не знаю, я же спрашиваю. А где можно увидеть список необходимых ресурсов? Название: Re: Qt 5.0.1 MySQL-problems Отправлено: lit-uriy от Июнь 19, 2013, 03:22 вообще это всё в асистенте написано, вкратце можешь посмотреть здесь (http://www.wiki.crossplatform.ru/index.php/Развертывание_приложений_Qt_в_MS_Windows)
|