BerkeleyDB使用的一些心得

很久之前的笔记了,以下适合BDB新手,因为项目赶得比较紧,所以没有深入研究,很多地方不是根本的解决办法。

 

1.如果要对BDB进行封装的话,推荐参考下myicq源码中的实现方式。

 

2.在使用BDB的时候,如果用了set_flag等函数改变了数据库的标志,重新运行的时候切记要把原来的表删除。否则会报invalid argument错误。

 

3.报secondary index inconsistant with primary错误是有可能是下面的原因:a,在对数据库有影响的操作(删除,添加)之后,要记得更新(dbp->sync(dbp,0))。b,把原来的数据库删除之后重新建表。

 

4.在进行join查询的时候,carry数组要多留一格。 carry[n-i] = NULL.

 

5.打开环境,没有关闭环境,在结束程序时会报错,这是即使是屏蔽代码,删掉数据库也不行,需要将工程clean下,重新编译。

 

6.要使BDB支持中文路径的话,需要将路径字符串编码为UTF8的格式。

 

7.在BDB的次表中使用DB->set_bt_compare()函数影响到主表的数据。一个不是根本的解决方法是将主表和次表分别放在不同的DB文件中,即使得我们在windows的文件夹下看到的是 主表.db 次表.db两个不同的文件。(这个多亏了SXW,要不然真延误进度了)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值