Проблемы с открытием среды БД в Oracle Berkeley DB

Я новичок в базах данных и написал эту программу для тестирования BDB в Беркли. У меня проблемы с открытием среды — ошибка появляется в моей консоли и говорит:

testEnv\_db.001: No such file or directory
Error opening database environment
DbEnv::open: No such file or directory

Код консольной программы основан на примерах, приведенных в руководстве по транзакциям DB в Беркли, а текст программы до ошибки приведен ниже. int main(),

String^ key_allkeys  = "_ALLKEYS";
String^ key_valcount = "_COUNT";

// 1. Print some information to the screen, prompt user to enter path for key-value pair location:
Console::WriteLine("Oracle Berkeley DB Example Database Creator");
Console::WriteLine();
Console::WriteLine("Enter the path to the text file of key-value pairs:");
String^ kv_path = Console::ReadLine();

// 2. Declare initial variables:
String^ totalkeys;
int totalval;

// 3. Open the database:
u_int32_t env_flags = DB_CREATE | DB_INIT_LOCK | DB_INIT_LOG | DB_INIT_MPOOL | DB_INIT_TXN;
std::string envHome("testEnv");
u_int32_t db_flags = DB_CREATE | DB_AUTO_COMMIT;
Db *dbp = NULL;
const char *file_name = "mydb.db";
DbEnv myEnv(0);
try
{
myEnv.open(envHome.c_str(), env_flags, 0);
dbp = new Db(&myEnv, 0);
dbp->open(NULL, file_name, NULL, DB_BTREE, db_flags, 0);
}
catch(DbException &e)
{
std::cerr << "Error opening database environment: " << std::endl;
std::cerr << e.what() << std::endl;
exc_block(); // Block
return (EXIT_FAILURE);
}

Должно быть достаточно очевидно, что программа не работает try/catch блоки. Я прочитал руководство (буквально RTFM), и я не мог понять это — DB_CREATE Флаг указан как для среды, так и для базы данных, поэтому здесь не должно быть проблем.

Есть идеи?

0

Решение

Может просто случиться так, что каталог testEnv не существует в каталоге, где вы запускаете программу? Вы должны создать домашний каталог среды самостоятельно.

Кроме того, вы можете указать DB_RECOVER при открытии среды.

0

Другие решения


По вопросам рекламы [email protected]