我正在使用 sqlite 3.7、linux 2.6.38、qt 4.8.4
我的代码如下:
DataManager::DataManager(QObject *parent, const QString& path) : QObject(parent){
this->db = QSqlDatabase::addDatabase("QSQLITE");
this->db.setDatabaseName(path);
this->db.open();
this->execute("PRAGMA foreign_keys=ON;");
this->execute("PRAGMA synchronous=OFF;");
}
void DataManager::execute(const QString& sql) throw(DataException){
QSqlQuery query(db);
query.prepare(sql);
if(!query.exec()) THROWDATA("Could not execute \"" + sql + "\"(" + query.lastError().text()+")", query.lastError().number());
qDebug() << "commit:" << query.isActive() << query.lastError();
query.clear();
qDebug() << "commit:" << query.isActive() << query.lastError();
}
当我执行
this-> execute("Insert into table values('0' , 'Name');
代码在提交大约 10 秒后不会立即提交到数据库。
需要建议。
最佳答案
您必须删除以下行
this->execute("PRAGMA synchronous=OFF;");
如果您想更加确定,可以显式启用同步模式(通常是默认模式):
this->execute("PRAGMA synchronous=NORMAL;");
关于linux - sqlite 插入查询未立即提交到数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39306076/