加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

SQLite的 cannot commit - no transaction is active报错

发布时间:2020-12-12 23:39:12 所属栏目:百科 来源:网络整理
导读:最近测试SQLite时遇到了一个奇怪的问题,我在大批量循环插入记录时偶然会报告“cannot commit - no transaction is active”错误,多次尝试仍然如此,代码如下: ... for (int j=0;j100000;j++) { rc = sqlite3_exec(db,"BEGIN TRANSACTION;",NULL,errMsg);

最近测试SQLite时遇到了一个奇怪的问题,我在大批量循环插入记录时偶然会报告“cannot commit - no transaction is active”错误,多次尝试仍然如此,代码如下:

...

for (int j=0;j<100000;j++)
{

rc = sqlite3_exec(db,"BEGIN TRANSACTION;",NULL,&errMsg);
for (int i=0;i<1000;i++)
{
strSQL.Format("INSERT INTO students VALUES(%d,%d,'%30d');",j,i,j*10000+i);
rc = sqlite3_exec(db,strSQL,&errMsg);
}
strSQL = "COMMIT TRANSACTION;";

rc = sqlite3_exec(db,&errMsg);

}

...

后来,我发现每当报告“cannot commit - no transaction is active”错误前,还会报告一个“database or disk is full”错误,该错误是"INSERT INTO students VALUES(%d,时报告的,但事实上,我的硬盘空间很足,SQLite不是独占数据库访问吗?疑惑之下我到网上搜索了一番,发现可能是Window文件系统问题或杀毒软件影响^.^,看来暂时没办法解决了,只能自己写好出错处理或期待SQLite出新版解决该BUG了。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读