Привет всем. У меня появилась проблема с мускулом. Вин7 64, Мускул 5.0, КуТэ 4.7.
Началось всё с того, что у меня был готовый проект который пользовал SQLite. Но вот решил я перевести его на MySQL. Собрал плагин, прописал драйвер, создал таблицы все - всё сделал. Плагин собирал по инструкции http://postpacific.ru/showthread.php?t=1485&page=1. Все эти файлы появились в директории QTDIR\plugins\sqldrivers. Как я понял, больше с ними ничего не надо делать, никуда подключать, копировать и тд. Драйвер загрузился(во всяком случае КуТэ не сказал "нот лоадед" и тд). Я подключился к своей базе. Изменил некоторые запросы специфичные для мускула(ну типа там CURDATE()) и всё такое. В базу запросы пишутся, читаются - всё хорошо. И я думал что победил... Но... Я не могу ничего записать в таблицу используя непосредственное редактирование ячеек. Они редактируются, но сразу сбрасываются после смены фокуса. Пробывал варианты с "OnManualSubmit", ОнРоуЧендж, выставлял AllEditTriggers и всё эт прописывал - не помогло(на скулайте работало по дефолту без проблем).
Также перестали работать все мапперы в проекте. Их три штуки - они все не работают. Для маппера вызывается отдельное диалоговое окно, стоит setSubmitPolicy(QDataWidgetMapper::AutoSubmit), всё вроде бы как положено. И с SQLite-ом это всё прекрасно работало. Тоесть не работают ни мапперы, ни редактирование ячеек непосредственно в таблице. Что ему не нравися - я понять не могу... Не работает на таблицах на которых нет ни отношений, ничего - просто таблица с данными и её модель - не работает... На кнопке "ок" маппера вызывается "submit()" - не помогает. Повторяю - с SQLite всё работало, тут вдруг другая база - и перестало както... Также стал неработоспособен код типа такого:
void Doors::delDoor()
{
QModelIndex index = doorTableView->currentIndex();
if(!index.isValid())
return;
QSqlRecord record = doorModel->record(index.row());
QString DoorName = record.value(Door_Name).toString();
int k = QMessageBox::warning(this, tr("Удаление двери"),
tr("Удалить дверь \"%1\" из списка дверей?").arg(DoorName),
QMessageBox::Yes | QMessageBox::No);
if (k == QMessageBox::No)
{
return;
}
doorModel->removeRow(index.row());
doorModel->submitAll();
doorModel->select();
}
Появились некоторые подробности. Проверил проект на ВинХП - всё работает чуть более чем великолепно... Семерка чтоли 64-разрядная "недружит" со всем этим делом, или что может быть то?
Я вот щас на скороую руку поставил ну бук с Икспихой мускул, базу скриптанул, проект собрал, запустил - всё работает...
Всем спасибо :-)
Заработало. Всё решилось установкой другой версии MySQL (5.1).
Форум Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)