Re: DB3 problem with put

From: Andrew Thompson <andy_at_fud.org.nz>
Date: 09 Apr 2003 11:04:34 +1200
On Wed, 2003-04-09 at 00:54, Stephan Möck wrote:
> I'm using DB3 to store file informationen. The key is the directory name and
> the value is the inode number. At runtime I recieve the following error
> message frome the database. Can anybody help me with this problem?
> 
> key:   /test   value:   16791
> DB->put: DB_KEYEXIST: Key/data pair already exists		//should be 	/test/file
> DB->put: DB_KEYEXIST: Key/data pair already exists		//should be
> /test/textfile
> DB->put: DB_KEYEXIST: Key/data pair already exists		// ...
> DB->put: DB_KEYEXIST: Key/data pair already exists
> DB->put: DB_KEYEXIST: Key/data pair already exists
> DB->put: DB_KEYEXIST: Key/data pair already exists
> 
> 
> void add_database(char *sub)
> {
> 		memset(&key, 0, sizeof(key));
> 		memset(&data, 0, sizeof(data));
> 
> 		key.data = sub;
> 		key.size = sizeof(sub);
> 		data.data = statbuf.st_ino;				//inode number from the stat() call
> 		key.size = sizeof(statbuf.st_ino);
                  ^^^^^^^^

Shouldnt this be data.size?


Andy

> 
> 		if ((ret = dbp1->put(dbp1, NULL, &key, &data, DB_NOOVERWRITE)) == 0)
> 		{
> 			printf("key:   %s   value:   %d\n", (char *)key.data,data.data);
> 		}
> 		else
> 		{
> 			dbp1->err(dbp1, ret, "DB->put");
> 		}
> }
Received on Tue Apr 08 2003 - 14:00:40 UTC

This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:37:03 UTC