关于打开数据库的问题。

yhb7805 2003-09-09 09:34:46
int OpenDatabase()
{
$char dbname[255];
char msg[256];

memset(dbname, 0, 255);
sprintf(dbname,"%s", getenv("INIT_USING_DBASE") );
$database $dbname;
if(sqlca.sqlcode)
{
memset(msg, 0, 255);
sprintf(msg, "打开数据库<%s>错误!", dbname);
DT_LOG(msg, sqlca.sqlcode);
return(-1);
}
//DT_LOG("open DB OK !!!", 0);
return 0;
}


上面这段代码有问题么?为什么运行时有时会死在这个函数里(我在LOG里看到记录到open DB OK 的前一条就没有了,但是前一条log是进入OpenDatabase())正常运行时都有记录,就是死掉时,就停在这里。
...全文
47 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
wenlq 2003-09-17
  • 打赏
  • 举报
回复
alter table unitkey lock mode ( row ) ;
yhb7805 2003-09-17
  • 打赏
  • 举报
回复

{ TABLE unitkey row size = 1527 number of columns = 6 index size = 22 }
create table unitkey
(
indexdata char(17),
mstkey char(1425),
randnum char(17),
comkey char(33),
mackey char(33),
flag char(2)
);

create index ix100_1 on unitkey (indexdata)
using btree ;

如何将这个表设置为记录级锁
wenlq 2003-09-10
  • 打赏
  • 举报
回复
你程序停住的时候,dbaccess还能访问库吗?
我觉得总该报个错误吧,SQLCODE = ?
连库 一般就这么写 :
你的一种 databse :dbname_val
直接写库名 database dbname
connect 连接 connect to 'dbname' /connect to :dbname_val

zrq 2003-09-10
  • 打赏
  • 举报
回复
很可能是数据库不能访问。首先你必须保证用Informix的客户端(dbaccess或isql)可以访问到数据库。要仔细检查/etc/hosts文件中的主机IP是否下确,其次要看/etc/services中的服务名与/home/infomix/etc/sqlhost和/home/informix/.profile中的服务名定义是否一致。如果还不行的话,那就要看看核心参数了。用onmonitor可以查看和调整参数。
yhb7805 2003-09-09
  • 打赏
  • 举报
回复
谢谢wenlq!!
是不是跟数据库的配置有关,比如同时在访问的最多用户数的限制,我对数据库不熟,只是在程序里有个地方需要从数据库的一个表里读出数据到共享内存,但是有时侯进程会停在这里。
我对其他的地方都作过跟踪,是一路跟到这个函数的,因为我问过周围其他做数据库的人,他们也认为这个函数没什么问题。
还有同样的程序在HPUNIX上,就没有问题,但是在SCO上就会在这个地方莫名其妙的停住。
各位在打开数据库时都是怎么写的?或者 说怎么写比较规范/正规?
wenlq 2003-09-09
  • 打赏
  • 举报
回复
我测过应该没问题的。
可能在其它地方死了,建议多加些调试语句跟踪一下。

1,195

社区成员

发帖
与我相关
我的任务
社区描述
其他数据库开发 Informix
社区管理员
  • Informix社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧