Russian Qt Forum

Qt => Установка, сборка, отладка, тестирование => Тема начата: kadr от Октябрь 19, 2009, 21:20



Название: установка драйвера mysql для QT на linux
Отправлено: kadr от Октябрь 19, 2009, 21:20
привет всем пытаюсь установить драйвер mysql на лине, нашел в нете как это делать:

cd $QTDIR/src/plugins/sqldrivers/mysql

qmake -o Makefile "INCLUDEPATH+=/usr/local/include" "LIBS+=-L/usr/local/lib -lmysqlclient_r" mysql.pro
make
но у меня вылетает вот такая ошибка:

/opt/qtsdk-2009.02/qt/.qmake.cache:2: Unknown replace function: quote
/opt/qtsdk-2009.02/qt/.qmake.cache:3: Unknown replace function: quote
Failure to read QMAKESPEC conf file /mkspecs/linux-g++/qmake.conf.
Error processing project file: /opt/qtsdk-2009.02/qt/src/plugins/sqldrivers/mysql/mysql.pro
что это означает? кто знает как поставить драйвер mysql на qt подскажите как это можно сделать!


Название: Re: установка драйвера mysql для QT на linux
Отправлено: Tonal от Октябрь 20, 2009, 07:19
А примеры собираются?
Похоже у тебя криво установлен Qt SDK


Название: Re: установка драйвера mysql для QT на linux
Отправлено: kadr от Октябрь 20, 2009, 08:04
У меня есть дрова для sqllite и для psql, установились вместе с qt creator, а вот mysql-ких дров нет!


Название: Re: установка драйвера mysql для QT на linux
Отправлено: Пантер от Октябрь 20, 2009, 11:29
ИМХО, проще просто пересобрать Qt.


Название: Re: установка драйвера mysql для QT на linux
Отправлено: kadr от Октябрь 20, 2009, 13:22
ПЕРЕСОБИРАЛ, с параметром qt-sql-mysql, не помогло!


Название: Re: установка драйвера mysql для QT на linux
Отправлено: Пантер от Октябрь 20, 2009, 16:38
Давай полностью строку конфигурирования сюда. И желательно опиши свои действия.


Название: Re: установка драйвера mysql для QT на linux
Отправлено: PavelDart от Октябрь 20, 2009, 22:51
Когда мне понадобился драйвер на лине, я нашёл его вроде бы синаптиком и установил или ручками положил рядом с другими драйверами, потом уже в дизайнере проверил работоспособность всё ок, базу и таблицу видел.  Так же прикручивали драйвер на институтских машинах.


Название: Re: установка драйвера mysql для QT на linux
Отправлено: kadr от Октябрь 21, 2009, 14:21
Давай полностью строку конфигурирования сюда. И желательно опиши свои действия.
./configure -qt-sql-mysql -debug-and-release -opensource
У меня QT уже скомпилина, вообще как можно его из сырцов собрать, облазил весь нет, нашел много решений, попробовал, но не получается, в частности вот такой вариант использовал:

cd $QTDIR/src/plugins/sqldrivers/mysql
qmake -o Makefile "INCLUDEPATH+=/usr/local/include" "LIBS+=-L/usr/local/lib -lmysqlclient_r" mysql.pro
make
на линуксе выдает вот такую ошибку:
/opt/qtsdk-2009.02/qt/.qmake.cache:2: Unknown replace function: quote
/opt/qtsdk-2009.02/qt/.qmake.cache:3: Unknown replace function: quote
Failure to read QMAKESPEC conf file /mkspecs/linux-g++/qmake.conf.
Error processing project file: /opt/qtsdk-2009.02/qt/src/plugins/sqldrivers/mysql/mysql.pro

на работе на винде выдает такую ошибку:
In file included from main.cpp:44:
../../../sql/drivers/mysql/qsql_mysql.h:52:19: mysql.h: No such file or directory
In file included from main.cpp:44:
../../../sql/drivers/mysql/qsql_mysql.h:107: error: expected `)' before '*' token
mingw32-make[1]: *** [tmp/obj/debug_shared/main.o] Error 1
mingw32-make[1]: Leaving directory `C:/Qt/2009.03_4.5/qt/src/plugins/sqldrivers/mysql'
mingw32-make: *** [debug-all] Error 2



Название: Re: установка драйвера mysql для QT на linux
Отправлено: Пантер от Октябрь 21, 2009, 17:20
На работе у тебя не может инклуд найти.
Под линем сделай:
1. make confclean
2. ./configure -qt-sql-mysql -debug-and-release -opensource
3. make
4. sudo make install


Название: Re: установка драйвера mysql для QT на linux
Отправлено: kadr от Октябрь 21, 2009, 23:49
На работе у тебя не может инклуд найти.
Под линем сделай:
1. make confclean
2. ./configure -qt-sql-mysql -debug-and-release -opensource
3. make
4. sudo make install
Спасибо, это маленько помогло, теперь драйвер появился, даже открывается база данных, но вот когда я например пытаюсь добавит или прочитать данные из неё, он выдает вот что:
QSqlError(-1, "Driver not loaded", "Driver not loaded")
Что это может значить, база ведь уже же открыта!


Название: Re: установка драйвера mysql для QT на linux
Отправлено: Пантер от Октябрь 22, 2009, 06:19
Закинь сюда код соединения с базой и создания/выполнения QSqlQuery.


Название: Re: установка драйвера mysql для QT на linux
Отправлено: kadr от Октябрь 22, 2009, 08:07
Вот:
   QSqlQuery q;
   QSqlDatabase db = QsqlDatabase::addDatabase("QMYSQL", "mydb");
   db.setHostName("192.168.3.10");//Это адрес машины на которой установлена mysql
   db.setDatabaseName("Имя базы");
   db.setUserName("Пользователь");
   db.setPassword("*******");
   db.open();
там дальше типа проверка на открытие баз,
if (db.isOpen())
  {
     qDebug() << tr("Соединение с БД установлена");
  }
else
  {
     qDebgu() << tr("Соединение с БД не установлено");
  }  
...................................................
код программы!
q.exec("INSERT INTO название таблицы (столбец1, столбец2, столбец3, столбецN) " "VALUES (значение1, значение2, значение3, значениеN)");
..................................
db.close();
db.removeDataBase("mydb");

Вывод программы:
Соединение с БД установлено.
Но при выполнение запроса добавления выдает ошибку что драйвер не загружен!


Название: Re: установка драйвера mysql для QT на linux
Отправлено: Пантер от Октябрь 22, 2009, 08:25
"mydb" убери


Название: Re: установка драйвера mysql для QT на linux
Отправлено: BRE от Октябрь 22, 2009, 08:26
Перенеси QSqlQuery q, что бы она определялась после открытия базы.


Название: Re: установка драйвера mysql для QT на linux
Отправлено: Пантер от Октябрь 22, 2009, 11:31
Перенеси QSqlQuery q, что бы она определялась после открытия базы.
Точно, проглядел. Но "mydb" тоже убрать нужно.


Название: Re: установка драйвера mysql для QT на linux
Отправлено: kadr от Октябрь 22, 2009, 14:00
Перенеси QSqlQuery q, что бы она определялась после открытия базы.
Точно, проглядел. Но "mydb" тоже убрать нужно.
Это я написал здесь малясь не правильно, так q определяется конечно же после открытия базы! Хорошо попробую без идентификатора соединения!   


Название: Re: установка драйвера mysql для QT на linux
Отправлено: kadr от Октябрь 22, 2009, 19:08
Решил проблему с загрузкой драйвера, но почему то у меня никак не хотят данные добавляться в БД.

q.exec("INSERT INTO main (code, name, proizvod, ostatok, base_chena, predoplat_group) VALUES (number, name, proizvod, kol, chena, group)");


Название: Re: установка драйвера mysql для QT на linux
Отправлено: kadr от Октябрь 22, 2009, 19:28
Вроде бы нашел в чем проблема! Когда я достаю цену из строки и записываю ее в переменную, он нормального размера, но после того как ее переношу в переменную типа double, то она становиться огроммной, куча лишних нулей, строка.toDouble():
строка = 490,97
переменная типа double = 490.97000000000003
Как сделать так что бы там было 2 знака после запятой!


Название: Re: установка драйвера mysql для QT на linux
Отправлено: Пантер от Октябрь 22, 2009, 19:33
А зачем переносишь? Кинь сюда код извлечения и загрузки.
Походу, с БД раньше не работал?


Название: Re: установка драйвера mysql для QT на linux
Отправлено: kadr от Октябрь 22, 2009, 19:40
while (!file_r.atEnd())
     {
            str = file_r.readLine().trimmed();
            rab = str.mid(0,8).trimmed();
            number = rab.toInt();
            name = str.mid(10,40).trimmed();
            proizvod = str.mid(50,44).trimmed();
            rab.clear();
            rab = str.mid(96,7).trimmed();
            kol = rab.toInt();
            rab.clear();
            rab = str.mid(106,7).trimmed();
            j = 0;
            rab1.clear();
            while (j != rab.length())
                {
                    if ((rab.at(j) != 'p') && (rab.at(j) != '.'))
                    {
                        rab1.append(rab.at(j));
                    }
                    j++;
                }
            rab1.trimmed();
            chena = rab1.toDouble();
            rab2.clear();
            group = str.mid(126,35).trimmed();
 
            rab.clear();
            q.exec("INSERT INTO main (code, name, proizvod, ostatok, base_chena, predoplat_group)" "VALUES (number, name, proizvod, kol, chena, group)");
          
      
     }

    file_r.close();
    close();
    db.close();
}


Название: Re: установка драйвера mysql для QT на linux
Отправлено: Пантер от Октябрь 22, 2009, 19:44
Мдя.... Это на долго... :)
Код
C++ (Qt)
q.prepare("INSERT INTO main (code, name, proizvod, ostatok, base_chena, predoplat_group)" "VALUES (:number, :name, :proizvod, :kol, :chena, :group)");
q.bindValue(":number", number);
........................
q.exec();


Название: Re: установка драйвера mysql для QT на linux
Отправлено: kadr от Октябрь 22, 2009, 19:55
Мдя.... Это на долго... :)
Код
C++ (Qt)
q.prepare("INSERT INTO main (code, name, proizvod, ostatok, base_chena, predoplat_group)" "VALUES (:number, :name, :proizvod, :kol, :chena, :group)");
q.bindValue(":number", number);
........................
q.exec();
Заработало, спасибки!  :D