免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2040 | 回复: 4
打印 上一主题 下一主题

[C++] 一个应用里面同时连接oracle以及sybase的问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-02-28 19:09 |只看该作者 |倒序浏览
我最近在写一个数据库连接池,这个连接池根据配置会连接oracle数据库(通过封装oci)以及sybase数据库(通过封装ctlib).我做单元测试的时候单独连接oracle或者单独连接sybase都没有问题,但是我合到一起测试的时候程序就会在初始化oracle的OCIEnvInit的调用处core掉.不知道cu有没有遇到过这个奇怪的问题?

论坛徽章:
0
2 [报告]
发表于 2008-02-28 19:36 |只看该作者
不知道你的连接池的思想是什么样的。
应该是两种连接各有若干初始连接吧。这样应该不会错。
不过,值得注意的一点是,两者都要是多线程模式。是Unix下的吧?

论坛徽章:
0
3 [报告]
发表于 2008-02-28 19:43 |只看该作者
原帖由 ehero 于 2008-2-28 19:36 发表
不知道你的连接池的思想是什么样的。
应该是两种连接各有若干初始连接吧。这样应该不会错。
不过,值得注意的一点是,两者都要是多线程模式。是Unix下的吧?


我有点怀疑是不是我链接的时候链接的库文件有冲突,我链接生成可运行程序的时候用到了如下库:
-lct -lcs -lintl -lsybtcl -lcomn -rdynamic -ldl -lnsl -lm

但是我还没有把多线程引进来,目前的意图是在一个进程里面先连接oracle,做一些操作,然后再连sybase,结果出问题了,oracle初始化连接的时候就有问题,导致程序core掉了.

论坛徽章:
0
4 [报告]
发表于 2008-02-28 19:45 |只看该作者
我用的是redhat linux, oracle 9.2 sybase12.5

论坛徽章:
0
5 [报告]
发表于 2008-02-29 16:10 |只看该作者
解决了,原来是sybase客户端在redhat上的bug导致的,需要在程序中执行以下代码:

__const unsigned short int *__ctype_b;
__const __int32_t *__ctype_tolower;
__const __int32_t *__ctype_toupper;
       
void ctypepatch()
{
        __ctype_b = *(__ctype_b_loc());
        __ctype_toupper = *(__ctype_toupper_loc());
        __ctype_tolower = *(__ctype_tolower_loc());
}
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP