Поиск:

Ответ в темуСоздание новой темы Создание опроса
> [QT4] QT + MYSQL portable, QT + MYSQL portable 
V
    Опции темы
CuteBunny
Дата 22.4.2010, 02:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 77
Регистрация: 14.2.2008

Репутация: 1
Всего: 1



Проблема с deployment'ом программы...

Есть БД на хостинге, СУБД мускл 5.х...

Требуется написать прогу, которая юзает БД хостинга локально, сама база будет заливаться потом через dump файлы.

Поставил последний denwer, взял всю папку mysql5, кинул в папку с exe...

Драйверы, плагины, либы все есть... 

Запускаю сервер так:

Код

    QProcess mysqld.start(appPath + "/mysql5/bin/mysqld.exe");
    if (!mysqld.waitForStarted(1000))
    {
        qDebug() << mysqld.errorString() << "\n";        
        a.exit();
        return 0;
    }
    db = QSqlDatabase::addDatabase("QMYSQL");    
    db.setHostName("localhost");
    db.setPort(3306);
    db.setDatabaseName("db_name");
    db.setUserName(settings.at(0));
    db.setPassword(settings.at(1));
    if (!db.open())
    {
        qDebug() << db.lastError().text() << "\n";
        a.exit();
        return 0;
    }
    QObject::connect(&a, SIGNAL(lastWindowClosed()), &mysqld, SLOT(kill()));


Проблема, у меня все работает, правда, пытаюсь сделать выборку таблицы с более 1500 записей, ставлю ORDER BY, вываливается ошибка
sort aborted, запускаю denwer вск ок (это больше наверное к теме mysql относится), а другая проблема, на других машинах пытаюсь запустить exe, то сервер не запускается, пробовал просто запустить из папки mysqld.exe консоль появляется, потом исчезает (хммм, наверное тоже больше к mysql теме относится  smile, p.s.: в логах comp4.err ошибок вроде нет), еще одна проблема, если QApplication::applicationDirPath() - содержит русские символы наверное только в windows программа не найден mysqld.exe...

Собственно, сложновато как-то таскать mysql сервер с программой... Может есть другие варианты? 
Кто-нибудь пробовал связку embedded mysql + qt?


Это сообщение отредактировал(а) CuteBunny - 22.4.2010, 03:07
PM MAIL   Вверх
ghoust
Дата 22.4.2010, 12:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 3.5.2007

Репутация: нет
Всего: нет



А что, серьезная нагрузка ожидается? Может sqlite попробовать? Про mysql точно не знаю, но просто взять и перекинуть папку с exe-шником вряд-ли получится. Времена доса прошли. Наверняка он даже свой сервис при установке запускает.
PM MAIL   Вверх
CuteBunny
Дата 23.4.2010, 02:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 77
Регистрация: 14.2.2008

Репутация: 1
Всего: 1



Да я же говорю... Я бы сам не стал бы усложнять себе жизньsmile)) Но видите ли, данные БД берутся с хоста, там естественно mysql, я искал варианты конвертирования из mysql в sqlite, вроде есть, но клиенту неудобно будет, придется заниматься конвертированием и пр. заморочками, проще, чтобы программа поддерживала mysql, и данные с бд на хостинге можно было легко залить в бд в программе.

Другой вариант мне подсказал знакомый, создавать установочный бинарник, который будет ставить mysql, настраивать его так чтобы он сам запускался когда надо...

sqlite - мне тоже нравится

Ну ладно, вроде я разобрался в чем дело...

Код

    QProcess::startDetached("./mysql/bin/mysqld.exe"); 
// - указал относительный путь до демона мускуля (хотя меня все еще смущает лог //mysql) почему detached? вроде так лучше, запустили 
//демона и пусть себе висит, нам с ним обмениваться данными не надо, а вот если дамп 
//залить, то там я думаю придется mysql.exe уже юзать, проблема только в том, что если запустить несколько программ, 
//то столько же запуститься и mysqld.exe:) - старший кодер, сказал, что не есть хорошо:) 
//как запретить запуск еще одного mysqld.exe пока не знаю, но 
//pid первого mysqld.exe получить можно, вроде
    QTest::qSleep(1000); // - иногда mysqld просто не успевает запуститься, я сразу пытаюсь подсоединиться,
// поэтому поставил 1 секунду
    QSqlDatabase db;      // - дальше все как обычно
    db = QSqlDatabase::addDatabase("QMYSQL");    
    db.setHostName("localhost");
    db.setPort(3306);
    db.setDatabaseName("db_name");
    db.setUserName("root");
    db.setPassword("kent8");
    if (!db.open())
    {
        qDebug() << db.lastError().text() << "\n";
        a.exit();
        return 0;
    }


Как запретить запуск еще одного мускуль демона? smile 

Это сообщение отредактировал(а) CuteBunny - 23.4.2010, 02:51
PM MAIL   Вверх
CuteBunny
Дата 23.4.2010, 08:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 77
Регистрация: 14.2.2008

Репутация: 1
Всего: 1



Разобралсяsmile

QtSingleApplication мне в помощьsmile

Это сообщение отредактировал(а) CuteBunny - 23.4.2010, 08:08
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С/С++: Кроссплатформенное программирование, QT/Gtk+/wxWidgets"
JackYF
Любитель
  • В заголовке темы в квадратных скобках обозначьте используемую вами библиотеку, например: [QT],[GTK],[wx].
  • Если вопрос актуален только для некоторой версии библиотеки, либо, если вы пользуетесь не самой последней версией, укажите это. Например: [QT4], [GTK2].
  • Все начинающие изучать Qt - не забудьте зайти сюда.
  • Проставьте несколько ключевых слов темы, чтобы её можно было легче найти.
  • В вопросе укажите полную версию версию библиотеки, а также все дополнительные используемые программные пакеты.
  • Не забывайте пользоваться кнопкой "Код".
  • Телепатов на форуме нет! Задавайте чёткий, конкретный и полный вопрос. Указывайте полностью ошибки компилятора и компоновщика.
  • Новое сообщение должно иметь прямое отношение к тематике этого раздела. Флуд, флейм, оффтопик запрещены.
  • Категорически запрещается обсуждение вареза, "кряков", взлома программ и т.д.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, Любитель.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets | Следующая тема »


 




[ Время генерации скрипта: 0.0529 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.