用qt开发的程序,运行期间用:memory:的数据库,完成之后attach一个文件数据库,并将:memory:中数据库导出
代码中m_db是之前创建的:memory:数据库
...
bool rslt = false;
if(Open()) // Open为自定义的函数,确保m_db已经打开
{
QSqlQuery query(m_db);
rslt = query.exec("attach 'path/file.db3 as expfiledb'");
rslt = query.exec("create expfiledb.tableA as select * from min.tableA"); // 这一句操作返回false
rslt = query.exec("create expfiledb.tableB as select * from min.tableB");
rslt = query.exec("detach expfiledb");
}
...
当main.tableA中数据超过400条之后,执行以上代码,就会导致执行失败,但也不是每次都失败,极少概率能够正常导出。
rslt返回false。 导出的数据库文件file.db3为0kb,同时产生一个同名后缀为*.journal文件。 查过sqlite的资料,理解为发生错误,该journal文件为sqlite进行rollback使用
调试了一天,未果,向大侠求助。