Russian Qt Forum

Qt => Базы данных => Тема начата: NOs от Август 25, 2011, 10:55



Название: Проблемка с плагином MySQL НУЖНА ПОМОЩЬ
Отправлено: NOs от Август 25, 2011, 10:55
В общем проблема в следующем -> собираю плагин под мускул все отлично проходит софтина конектится к БД все отображает но вот редактирование нивкакую не работает через QTableView+QSqlTableModel вот не добавляет записи и не радактирует никак это все происходит на платформе Windows(тут же поднять мускульный сервак) думал проблема в версии мускула поэтому пересобирал с MySQL 4.0 MySQL 5.0 MySQL 5.1 проблема та же но вот какая странность на линухе Ubuntu 10.04 все работает отлично значит смею предположить проблема все таки в драйвере да еще чуть не забыл в sqlbrowser'e тоже самое таже хрень с добавлением ) Qt 4.7  Windows 7   


Название: Re: Проблемка с плагином MySQL НУЖНА ПОМОЩЬ
Отправлено: Пантер от Август 25, 2011, 11:03
Может у пользователя нет прав?


Название: Re: Проблемка с плагином MySQL НУЖНА ПОМОЩЬ
Отправлено: NOs от Август 25, 2011, 11:05
права есть))с Ubunt'ы под этим же пользователем к этому же серваку все ок)
http://www.prog.org.ru/topic_18527_0.html - тут советуют зависимости поглядеть откуда libmysql.дергается ))тож не помогло))


Название: Re: Проблемка с плагином MySQL НУЖНА ПОМОЩЬ
Отправлено: Пантер от Август 25, 2011, 11:06
Если подключается, значит с драйвером все нормально. Проверь еще раз права и как коннектишься.


Название: Re: Проблемка с плагином MySQL НУЖНА ПОМОЩЬ
Отправлено: NOs от Август 25, 2011, 11:10
вот так коннект происходит

Код
C++ (Qt)
dbWork::dbWork(QString host,QString user,QString passwd)
{
    QSqlError err = addConnection("QMYSQL","srv",host,user,passwd,3306);
   Dialog dd;
 
   if (err.type() != QSqlError::NoError)
dd.warningMessage(tr("An error occurred while opening the connection: ") + err.text());
 }
 
 
 
 
QSqlError dbWork::addConnection(const QString &driver, const QString &dbName, const QString &host,const QString &user, const QString &passwd, int port)
{
   static int cCount = 0;
 
   QSqlError err;
   db = QSqlDatabase::addDatabase(driver, QString("Browser%1").arg(++cCount));
   db.setDatabaseName(dbName);
   db.setHostName(host);
   db.setPort(port);
   if (!db.open(user, passwd)) {
       err = db.lastError();
       db = QSqlDatabase();
       QSqlDatabase::removeDatabase(QString("Browser%1").arg(cCount));
   }
 
 
   return err;
 
}
 


Название: Re: Проблемка с плагином MySQL НУЖНА ПОМОЩЬ
Отправлено: Пантер от Август 25, 2011, 11:15
А черезQSqlQuery можно данные изменить? Если нет, то какая ошибка?


Название: Re: Проблемка с плагином MySQL НУЖНА ПОМОЩЬ
Отправлено: NOs от Август 25, 2011, 11:17
Да прямым запросом работает


Название: Re: Проблемка с плагином MySQL НУЖНА ПОМОЩЬ
Отправлено: Пантер от Август 25, 2011, 11:20
Покажи тогда как создаешь модель, вьюху и как подключаешь модель к вьюхе.


Название: Re: Проблемка с плагином MySQL НУЖНА ПОМОЩЬ
Отправлено: NOs от Август 25, 2011, 11:25
Код
C++ (Qt)
void Browser::showTable(const QString &t)
{
 
 
   QSqlRelationalTableModel * model = new QSqlRelationalTableModel(table,db->db);
       model->setEditStrategy(QSqlTableModel::OnRowChange);
   model->setTable(t);
 
   model->setRelation(6, QSqlRelation("users", "id", "name"));
   model->setRelation(8, QSqlRelation("status", "id", "name"));
 
   if(this->enterDialog->userAccess=="1") model->setFilter("relTblAl_6.name='"+this->enterDialog->userName+"'");
   model->select();
 
 
   if (model->lastError().type() != QSqlError::NoError)
       emit statusMessage(model->lastError().text());
 
 
 
   table->setModel(model);
   table->setItemDelegate(new QSqlRelationalDelegate(table));
   //FtpUploadDelegate *itD=;
   table->setItemDelegateForColumn(12,new FtpUploadDelegate(table));
   table->setSortingEnabled(true);
   table->setGridStyle(Qt::DashLine);
   table->setColumnHidden(0, true);
   if(this->enterDialog->userAccess=="1"){
       table->setColumnHidden(6, true);
       table->setColumnHidden(8, true);
 
   }
 
 
   table->resizeColumnsToContents();
   //table->horizontalHeader()->setResizeMode(QHeaderView::Stretch);
   table->setEditTriggers(QAbstractItemView::DoubleClicked|QAbstractItemView::EditKeyPressed);
 
   connect(table->selectionModel(), SIGNAL(currentRowChanged(QModelIndex,QModelIndex)),this, SLOT(currentChanged()));
   table->setEditTriggers(QAbstractItemView::DoubleClicked|QAbstractItemView::EditKeyPressed);
  // connect(table->selectionModel(), SIGNAL(currentRowChanged(QModelIndex,QModelIndex)),this, SLOT(currentChanged()));
       connect(table->selectionModel(), SIGNAL(currentRowChanged(QModelIndex,QModelIndex)),model, SLOT(submit()));
       connect(table->selectionModel(), SIGNAL(selectionChanged(QItemSelection,QItemSelection)),model, SLOT(submit()));
 
       if(this->enterDialog->userAccess=="3") table->setEditTriggers(QAbstractItemView::NoEditTriggers);
 
 
   updateActions();
}
 
 


Название: Re: Проблемка с плагином MySQL НУЖНА ПОМОЩЬ
Отправлено: Пантер от Август 25, 2011, 11:27
Не, по QSqlRelationalTableModel я ничего сказать не могу, так как не юзал его. :(


Название: Re: Проблемка с плагином MySQL НУЖНА ПОМОЩЬ
Отправлено: NOs от Август 25, 2011, 11:28
Таже ошибка в QSqlModel в примере sqlbrowser


Название: Re: Проблемка с плагином MySQL НУЖНА ПОМОЩЬ
Отправлено: Пантер от Август 25, 2011, 11:29
QSqlQueryModel - read only.


Название: Re: Проблемка с плагином MySQL НУЖНА ПОМОЩЬ
Отправлено: NOs от Август 25, 2011, 11:33
QSqlQueryModel - read only.
То бешь она не умеет в мускул писать или как??не понял в Линухе же пишет))


Название: Re: Проблемка с плагином MySQL НУЖНА ПОМОЩЬ
Отправлено: NOs от Август 25, 2011, 11:35
Таже ошибка в QSqlModel в примере sqlbrowser
QSqlTableModel


Название: Re: Проблемка с плагином MySQL НУЖНА ПОМОЩЬ
Отправлено: NOs от Август 25, 2011, 14:57
ммм никто не знает???


Название: Re: Проблемка с плагином MySQL НУЖНА ПОМОЩЬ
Отправлено: NOs от Август 25, 2011, 15:27
В общем в момент вставки
Код
C++ (Qt)
qDebug()<<model->query()->lastError();
 

возвращает вот что

QSqlError(-1,"","")

WTF?


Название: Re: Проблемка с плагином MySQL НУЖНА ПОМОЩЬ
Отправлено: NOs от Август 25, 2011, 16:15
QSqlError(2036, "QMYSQL3: Unable to bind value", "Using unsupported buffer type: 61904420  (parameter: 2)")

при более детальном рассмотрении вот что нашел при добавлении говорят из за того что не совпадают версии клиентской и сервеной либ но я то собираю именно из той на которой сервер висит поэтому мозг уже лопается


Название: Re: Проблемка с плагином MySQL НУЖНА ПОМОЩЬ
Отправлено: Maquefel от Август 26, 2011, 07:57
А Windows 7 не Home edition часом?


Название: Re: Проблемка с плагином MySQL НУЖНА ПОМОЩЬ
Отправлено: NOs от Август 26, 2011, 08:56
дооо


Название: Re: Проблемка с плагином MySQL НУЖНА ПОМОЩЬ
Отправлено: NOs от Август 26, 2011, 08:57
господи иесуси неужели в этом косяк???))


Название: Re: Проблемка с плагином MySQL НУЖНА ПОМОЩЬ
Отправлено: Пантер от Август 26, 2011, 09:20
Может быть. ;) Винда - она такая.


Название: Re: Проблемка с плагином MySQL НУЖНА ПОМОЩЬ
Отправлено: NOs от Август 26, 2011, 09:45
В общем поставил виртуалку на любимой и родной бубнте там ХэПэХу вот щас пилится КуТэ 4.7.3 с параметром -plugin-sql-mysql жду пока допилится))вроде на ней файрберд собирал так что буду ждать положительного результата))


Название: Re: Проблемка с плагином MySQL НУЖНА ПОМОЩЬ
Отправлено: Maquefel от Август 26, 2011, 10:30
Просто такой же глюк наблюдали. На всех операционках работает, коткретно на этой машине с этой операционкой - нет.