This is working fine for me:
#include <QtSql>
#include <QtWidgets>
int main(int argc, char* argv[])
{
QApplication a(argc, argv);
QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL");
db.setDatabaseName("testdb");
db.setUserName("");
db.setPassword("");
db.setHostName("");
db.setConnectOptions("MYSQL_OPT_SSL_VERIFY_SERVER_CERT=FALSE");
if (!db.open()) {
qDebug() << db.lastError();
return 1;
}
QSqlQuery query;
query.exec("DROP TABLE IF EXISTS test");
if (!query.exec("CREATE TABLE test (id int, ts date)")) {
qDebug() << query.lastError();
return 1;
}
QString insertSql1 = "INSERT INTO test (id, ts) VALUES (1, now())";
if (!query.exec(insertSql1)) {
qDebug() << query.lastError();
return 1;
}
QTableView tv1;
auto model1 = new QSqlQueryModel;
model1->setQuery(QSqlQuery("SELECT * FROM test WHERE id = 1"));
tv1.setModel(model1);
tv1.show();
QTableView tv2;
auto model2 = new QSqlQueryModel;
QSqlQuery q;
q.prepare("SELECT * FROM test WHERE id = :id");
q.bindValue(":id", 1);
q.exec();
model2->setQuery(std::move(q));
tv2.setModel(model2);
tv2.show();
int ret = a.exec();
query.exec("DROP TABLE IF EXISTS test");
db.close();
return ret;
}
Please provide a minimal, compilable example to reproduce your problem.