|
View:
New views
1 Messages
—
Rating Filter:
Alert me
|
|
|
deleted the log file,unable to store or retieve
by Narendran
::
Rate this Message:
Reply (Restricted by the Administrator) | Reply to Author | View Threaded | Show Only this Message Dear Friends,
I am new to BerkeleyDB ,I tried to do a simple program to insert 1000 entries and read some 5 entries in random to see how berkeleyDB works. It worked fine ,then since the log file is 10 Mb,i deleted it ,to be frank ,then DB gave me some error,so i deleted the database file thinking that it will work fine and then i tried to run the program . DB says key /data pair exists and it won't allow me to do the insert and read opetaion fails(obviously). when i moved the file to some other folder and i tried to run a fresh copy there,it say the same error. Please help me ,i am struck in the first step itself . Thanking you, B.Narendran #include <db.h> #include <stdio.h> #include <stdlib.h> #include "malloc.h" #include "error.h" typedef struct ethernet { char port[8]; long int bandwidth; char ipaddr[20]; }ETH; int main() { ETH eth1; DB_ENV *envp; DB *my_database; u_int32_t flags,env_flags; int i,ret,ret_c; DBT key, data; char *z,*y; envp = NULL; my_database = NULL; ret = db_env_create(&envp, 0); if (ret != 0) { fprintf(stderr, "Error creating environment handle: %s\n",db_strerror(ret)); return (EXIT_FAILURE); } env_flags = DB_CREATE | DB_INIT_TXN | DB_INIT_LOCK | DB_INIT_LOG | DB_INIT_MPOOL | DB_RECOVER; ret = envp->open(envp,"", env_flags, 0); if (ret != 0) { fprintf(stderr, "Error opening environment: %s\n",db_strerror(ret)); goto err; } ret = db_create(&my_database,envp, 0); if (ret != 0) { envp->err(envp, ret, "Database creation failed\n"); goto err; } flags = DB_CREATE; ret = my_database->open(my_database,NULL,"my_db1.db",NULL,DB_BTREE,flags,0); if (ret != 0) { envp->err(envp, ret, "Database my_db.db open failed"); goto err; } z = "port"; y = "172.18.10."; key.data = &(eth1.port); key.size = sizeof(char[8]); data.data = ð1; data.size = sizeof(ETH); for(i = 1;i<=1000;i++) { memset(&key,(int)0, sizeof(DBT)); memset(&data,(int)0, sizeof(DBT)); memset(ð1,0,sizeof(ETH)); sprintf(eth1.port,"%s%d",z,i); sprintf(eth1.ipaddr,"%s%d",y,i%255); eth1.bandwidth = i; ret = my_database->put(my_database, NULL, &key,&data,DB_NOOVERWRITE); if (ret == DB_KEYEXIST) { my_database->err(my_database, ret,"Put failed because key %s already exists", eth1.port); } } /* Use our memory to retrieve the structure */ key.data = &(eth1.port); key.size = sizeof(char[8]); data.data = ð1; data.ulen = sizeof(ETH); data.flags = DB_DBT_USERMEM; sprintf(eth1.port,"%s%d",z,987); if(ret = my_database->get(my_database, NULL, &key,&data,0)) {printf("error code %d\t\n",ret);} else {printf("The retrived values are %s,%ld,%s\n",eth1.port,eth1.bandwidth,eth1.ipaddr);} sprintf(eth1.port,"%s%d",z,215); if(ret = my_database->get(my_database, NULL, &key,&data,0)) {printf("error code %d\t\n",ret);} else {printf("The retrived values are %s,%ld,%s\n",eth1.port,eth1.bandwidth,eth1.ipaddr);} sprintf(eth1.port,"%s%d",z,42); if(ret = my_database->get(my_database, NULL, &key,&data,0)) {printf("error code %d\t\n",ret);} else {printf("The retrived values are %s,%ld,%s\n",eth1.port,eth1.bandwidth,eth1.ipaddr);} sprintf(eth1.port,"%s%d",z,999); if( ret = my_database->get(my_database, NULL, &key,&data,0)) {printf("error code %d\t\n",ret);} else {printf("The retrived values are %s,%ld,%s\n",eth1.port,eth1.bandwidth,eth1.ipaddr);} sprintf(eth1.port,"%s%d",z,426); if(ret = my_database->get(my_database, NULL, &key,&data,0)) {printf("error code %d\t\n",ret);} else {printf("The retrived values are %s,%ld,%s\n",eth1.port,eth1.bandwidth,eth1.ipaddr);} err: if (my_database != NULL) if(ret = my_database->close(my_database, 0)) { printf("\nDatabase Closing Error\n"); } if(envp != NULL) if(ret_c=envp->close(envp,0)) { fprintf(stderr,"Environment Closing Error %d\n",ret_c); ret = ret_c; } return (ret == 0 ? EXIT_SUCCESS : EXIT_FAILURE); } |
| Free Forum Powered by Nabble | Forum Help |