deleted the log file,unable to store or retieve

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);
}