文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>sqlite报SQLITE_LOCKED "Database table is locked"

sqlite报SQLITE_LOCKED "Database table is locked"

时间:2010-12-03  来源:郁郁思扬

说什么数据表锁了.....

 

结果调到了现在...很是郁闷.

 

情况如下:

每个线程打开自己的SQLITE连接.线程间不混用.

 

 1 if (sqlite3_open_v2(strdb, \
2 db, \
3 SQLITE_OPEN_READWRITE | \
4 SQLITE_OPEN_CREATE | \
5 SQLITE_OPEN_NOMUTEX | \
6 SQLITE_OPEN_SHAREDCACHE, \
7 NULL) != SQLITE_OK)
8 {
9 fprintf(stderr, "sqlite3_open: %s\n", sqlite3_errmsg(*db));
10 return -1;
11 }

 

 

其中,SQLITE_OPEN_FULLMUTEX,SQLITE_OPEN_SHAREDCACHE都不行.我试过了.

 

A线程往T1插数据.里面用到了事务.并不长.

B线程往T2插数据.也用到了事务.也不长.

 

但是,AB之间插入时间是随机的.我发现,只是要A往T1插数据,紧跟着B往T2插数据.就一定会报错.

反之一样.

我又试了一下,A往T1插数据.启用事务. B往T2插数据.不启用事务.循环插入(暂不考虑效率)  一样报错...报的错也一样..

 

这觉得SQLITE没有真正的线程安全. 它没有做到SESSION这一级.只是连接式的线程安全.

后来在应该程序里..把两个事务用锁隔开.解决问题..记录之

很开心,希望能对别人有用.

相关阅读 更多 +
排行榜 更多 +
辰域智控app

辰域智控app

系统工具 下载
网医联盟app

网医联盟app

运动健身 下载
汇丰汇选App

汇丰汇选App

金融理财 下载