Je suis nouveau dans les bases de données et j'ai écrit ce programme d'entraînement pour tester Berkeley BDB. Je reçois des difficultés à ouvrir l'environnement - l'erreur apparaît dans ma console et dit:Problème d'ouverture de l'environnement DB dans Oracle Berkeley DB
testEnv\_db.001: No such file or directory
Error opening database environment
DbEnv::open: No such file or directory
Le code du programme de la console est fortement basée au large des exemples dans le Berkeley DB guide de transactions, et voici le texte de la programme jusqu'à l'erreur, sous 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);
}
Il devrait être assez évident que le programme ne parvient pas juste autour du try
/catch
blocs. J'ai lu le manuel (littéralement RTFM) et je ne pouvais pas le comprendre - l'indicateur DB_CREATE
est spécifié pour l'environnement et la base de données, donc il ne devrait pas y avoir de problème ici.
Des idées?