很久之前的笔记了,以下适合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,要不然真延误进度了)。