DB->open() can not work after system crush. :(
545054Nov 16 2006 — edited Jan 22 2008Hi all:
My application have multiple databases in a single file which has a database environments. BDB version is 4.5.20. IDE is BCB 6+SP4.
BDB works well before my system crush, but DB-open() return a error (error no:22). I don't know what happened.
My codes like this(partial):
DB_ENV *DbEnvData;
DB *DbTikSys;
DB *DbM01Sys;
DB *DbDaySys;
if(db_env_create(&DbEnvData, 0)) {Terminate(); return;}
try
{
if(DbEnvData->open(DbEnvData, FPathHome.c_str(), DB_CREATE | DB_THREAD | DB_INIT_CDB | DB_INIT_MPOOL, 0))
{
Terminate();
return;
}
}
catch(...)
{
Terminate();
return;
}
if(db_create(&DbTikSys, DbEnvData, 0)) {Terminate(); return;}
if(db_create(&DbM01Sys, DbEnvData, 0)) {Terminate(); return;}
if(db_create(&DbDaySys, DbEnvData, 0)) {Terminate(); return;}
if(DbTikSys->open(DbTikSys, NULL, FFileHisTik.c_str(),
"0000000000",
DB_BTREE, DB_CREATE | DB_THREAD, 0)) {Terminate(); return;}
if(DbM01Sys->open(DbM01Sys, NULL, FFileHisM01.c_str(),
"0000000000",
DB_BTREE, DB_CREATE | DB_THREAD, 0)) {Terminate(); return;}
if(DbDaySys->open(DbDaySys, NULL, FFileHisDay.c_str(),
"0000000000",
DB_BTREE, DB_CREATE | DB_THREAD, 0)) {Terminate(); return;}
After system crush, DbEnvData->open() OK, DbTikSys->open() error. And I found my application works well again after environment files(__db.001、__db.002、__db.003 、 __db.004) was deleted manual.
What shoud i do? Thandks a lot.