xxllff1
驱动牛犊
驱动牛犊
  • 注册日期2007-08-13
  • 最后登录2008-02-22
  • 粉丝0
  • 关注0
  • 积分110分
  • 威望12点
  • 贡献值0点
  • 好评度11点
  • 原创分0分
  • 专家分0分
阅读:2221回复:2

跪求BerkeleyDB数据库用tornado无法open问题?

楼主#
更多 发布于:2007-08-13 16:00
刚刚接触Berkeley DB 数据库,在Oracle网站上下的最新版本。应用于Tornado2.2上。
将BerkeleyDB22.out下载到目标板后,写了一个最简单的程序用于熟悉,代码如下:

#include "db.h"
#include <stdio.h>

int db_main(void)
{
int ret;
DB *dbp;
u_int32_t flags;

if ((ret = db_create(&dbp, NULL, 0)) != 0)
{fprintf(stderr, "db_create: %s\n", db_strerror(ret));
return 1;}

if ((ret = dbp->set_pagesize(dbp, 1024)) != 0)
{dbp->err(dbp, ret, "set_pagesize");
return 1;}
if ((ret = dbp->set_cachesize(dbp, 0, 32 * 1024, 0)) != 0)
{dbp->err(dbp, ret, "set_cachesize");
return 1;}

flags = DB_CREATE;
ret = dbp->open(dbp, NULL, "host:d://BD/single.db", NULL, DB_BTREE, flags, 0);

if (ret==0)
printf("Opening DB is successful!\n");
else
{dbp->err(dbp, ret, "%spen", "host:d://BD/single.db");
return 0;}
dbp->close(dbp, 0);
return 0;
}

编译下载后运行,报错如下:
fstat: S_errno_EAGAIN
host:d://BD/single.dbpen: S_errno_EAGAIN

在D盘目录中生成了__db.single.db文件,但文件大小为0.
调试运行发现,create可以正确进行,就当dbp->open时报错;前些天还报错为:errno:0xb;
这个问题折磨我两周了,也没有找到原因,希望高手指教,万分感谢。
hwybird
论坛版主
论坛版主
  • 注册日期2006-11-11
  • 最后登录2010-08-31
  • 粉丝0
  • 关注0
  • 积分988分
  • 威望359点
  • 贡献值0点
  • 好评度96点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2007-08-20 17:05
路径错误吧?后一个只用了一个“/”,完全是猜的
xxllff1
驱动牛犊
驱动牛犊
  • 注册日期2007-08-13
  • 最后登录2008-02-22
  • 粉丝0
  • 关注0
  • 积分110分
  • 威望12点
  • 贡献值0点
  • 好评度11点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2007-08-29 15:37
问题已经解决了,是由去NTFS文件系统的关系。
BerkeleyDB数据库不支持NTFS文件系统。
我在硬盘上建立了dosFs系统后,就可以open了。
游客

返回顶部