Now I’m working on Qt project and I need some MySQL support. MySQL was installed on virtual machine (Virtual Box) on Ubuntu Server. Here’s what I do:
int main(int argc, char** argv)
{
QApplication app(argc, argv);
QSqlDatabase hospital_db = QSqlDatabase::addDatabase("QMYSQL");
hospital_db.setHostName("192.168.56.10");
hospital_db.setDatabaseName("hospital_db");
hospital_db.setUserName("usr1");
hospital_db.setPassword("123");
if(!hospital_db.open()) {
qDebug() << "\nFailed connect to MySQL";
};
QTableView *tView = new QTableView;
QSqlTableModel model;
model.setTable("my_table");
model.setEditStrategy(QSqlTableModel::OnManualSubmit);
if (!model.select()) {
QMessageBox msgBox;
QString err(model.lastError().text());
msgBox.setText(err);
msgBox.exec();
}
model.setHeaderData(0, Qt::Horizontal, QObject::tr("ID"));
model.setHeaderData(1, Qt::Horizontal, QObject::tr("Name"));
model.setHeaderData(2, Qt::Horizontal, QObject::tr("Address"));
model.setHeaderData(3, Qt::Horizontal, QObject::tr("Phone"));
tView->setModel(&model);
tView->show();
QSqlDatabase::removeDatabase("my_table");
return app.exec();
}
I get “Unable to find table my_table” error . Table my_table is created properly. Here is result of SHOW FIELDS OF my_table:
+----------------+-----------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+----------------+-----------+------+-----+---------+----------------+
| hosp_id | int(11) | NO | PRI | NULL | auto_increment |
| hosp_name | char(100) | NO | | NULL | |
| hosp_address | char(100) | NO | | NULL | |
| hosp_ph_number | char(8) | NO | | NULL | |
+----------------+-----------+------+-----+---------+----------------+
And finally here is general_log from MySQL:
| 2011-08-11 12:21:54 | usr1[usr1] @ [192.168.56.1] | 36 | 0 | Connect | usr1@192.168.56.1 on hospital_db |
| 2011-08-11 12:21:54 | usr1[usr1] @ [192.168.56.1] | 36 | 0 | Init DB | hospital_db |
| 2011-08-11 12:21:54 | usr1[usr1] @ [192.168.56.1] | 36 | 0 | Query | SET NAMES utf8 |
| 2011-08-11 12:21:54 | usr1[usr1] @ [192.168.56.1] | 36 | 0 | Field List | my_table |
| 2011-08-11 12:21:54 | usr1[usr1] @ [192.168.56.1] | 36 | 0 | Field List | my_table |
| 2011-08-11 12:21:54 | usr1[usr1] @ [192.168.56.1] | 36 | 0 | Query | show index from my_table |
| 2011-08-11 12:22:01 | usr1[usr1] @ [192.168.56.1] | 36 | 0 | Quit | |
So, What am I doing wrong?
Well, seems that I had some problems with permissions on server side. Now everything is fine.