DB2的sqC文件名前八位不能重复的解决办法 _MySQL, Oracle及数据库讨论区_Weblogic技术|Tuxedo技术|中间件技术|Oracle论坛|JAVA论坛|Linux/Unix技术|hadoop论坛_联动北方技术论坛  
网站首页 | 关于我们 | 服务中心 | 经验交流 | 公司荣誉 | 成功案例 | 合作伙伴 | 联系我们 |
联动北方-国内领先的云技术服务提供商
»  游客             当前位置:  论坛首页 »  自由讨论区 »  MySQL, Oracle及数据库讨论区 »
总帖数
5
每页帖数
101/1页1
返回列表
0
发起投票  发起投票 发新帖子
查看: 2629 | 回复: 4   主题: DB2的sqC文件名前八位不能重复的解决办法         下一篇 
yanpeng
注册用户
等级:上等兵
经验:127
发帖:68
精华:0
注册:2011-12-26
状态:离线
发送短消息息给yanpeng 加好友    发送短消息息给yanpeng 发消息
发表于: IP:您无权察看 2016-2-5 14:42:07 | [全部帖] [楼主帖] 楼主

我们的项目中使用到了IBM的DB2数据库,系统开发语言是C++,操作数据库是直接在C++中编写ESQL(嵌入式SQL)语句。在使用中发现,只要有文件名前8位相同,就造成部分文件中的代码失效。

原因:
------------------
db2默认情况下使用*.sqC的名字生成*.bnd,又以*.bnd的文件名部分在数据库中做绑定,建一个同名的package。而db2的package的名字是有八字节长度限制的,造成前八位文件名相同的C++代码,总会后面的覆盖前面的。


解决:
------------------
取原始文件名的md5摘要前N位,拼成bnd文件的名字,再以此文件去目标数据库做绑定,这样package就不会前后覆盖了。


makefile中实际的做法:
------------------------

%.C : %.sqC
  db2 connect to $(dbName) user $(dbUser) using $(dbPassword);\
  db2 prep $*.sqC bindfile;\
  cp $*.bnd ${shell echo $* |md5sum -|cut -c1-8}_$*.bnd;\
  db2 bind ${shell echo $* |md5sum -|cut -c1-8}_$*.bnd;\
  db2 connect reset; \
  db2 terminate;


--转自



赞(0)    操作        顶端 
水云间山水
注册用户
等级:中士
经验:223
发帖:2
精华:0
注册:2016-2-17
状态:离线
发送短消息息给水云间山水 加好友    发送短消息息给水云间山水 发消息
发表于: IP:您无权察看 2016-2-17 19:26:53 | [全部帖] [楼主帖] 2  楼

不错哦,还阔以



赞(0)    操作        顶端 
面朝大海
注册用户
等级:中士
经验:234
发帖:0
精华:0
注册:2016-2-14
状态:离线
发送短消息息给面朝大海 加好友    发送短消息息给面朝大海 发消息
发表于: IP:您无权察看 2016-2-19 18:16:11 | [全部帖] [楼主帖] 3  楼

赞一个



赞(0)    操作        顶端 
斗破苍穹
注册用户
等级:中尉
经验:442
发帖:3
精华:0
注册:2016-1-8
状态:离线
发送短消息息给斗破苍穹 加好友    发送短消息息给斗破苍穹 发消息
发表于: IP:您无权察看 2016-2-22 16:19:27 | [全部帖] [楼主帖] 4  楼

比较不错!



赞(0)    操作        顶端 
春暖花开
注册用户
等级:下士
经验:180
发帖:0
精华:0
注册:2016-2-14
状态:离线
发送短消息息给春暖花开 加好友    发送短消息息给春暖花开 发消息
发表于: IP:您无权察看 2016-2-22 22:33:03 | [全部帖] [楼主帖] 5  楼

写的蛮好的



赞(0)    操作        顶端 
总帖数
5
每页帖数
101/1页1
返回列表
发新帖子
请输入验证码: 点击刷新验证码
您需要登录后才可以回帖 登录 | 注册
技术讨论