免费注册 查看新帖 |

Chinaunix

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

perl读取数据库的奇怪问题。大家帮看看 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2006-12-21 19:05 |只看该作者 |倒序浏览
用DBI连接数据库,然后联查两个表!
my $han = $dbh->prepare("select a.name, b.pid from table1 a, table2 b where a.aid = b.aid");
$han->execute();
while(($name, $pid) = $han->fetchrow_array())
{
  ....后续操作
}
打印$pid的值,发现一直都是4294967295,但在mysql里查的结果却是-1。pid在table2里保存的字段类型是int,默认-1。在其他的几个备份库里查出来也是同样的问题,而且是偶尔出现。用printf "%d", $value打出来的是-1。不知道怎么得到-1,高手帮帮忙。先谢了。

环境是Linux as4
perl 5.86
DBI-mysql 1.49
DBD-mysql 3.00006

论坛徽章:
0
2 [报告]
发表于 2006-12-21 19:17 |只看该作者
  1. select a.name, b.pid from table1 as a, table2 as b where a.aid = b.aid
复制代码

论坛徽章:
0
3 [报告]
发表于 2006-12-21 20:00 |只看该作者
改了语法,问题还存在!库里存的是-1,取出来成4294967295。会不会是DBI或者DBD的问题,mysql上有人遇到同样的问题,说DBD-3.00002已经修复了。可升到3.00006还是不行。已经快被折磨得不行了!大伙有人遇到过这样的问题吗?

论坛徽章:
1
荣誉会员
日期:2011-11-23 16:44:17
4 [报告]
发表于 2006-12-21 20:21 |只看该作者
bid是什麽type?? integer?还是??
如果是integer看起来应该不会呀..-1 取出来应该就是-1..
我用informix没碰过这个问题.....mysql没用过...

论坛徽章:
0
5 [报告]
发表于 2006-12-22 10:09 |只看该作者
4294967295在32位机上,就是-1,估计是perl本身搞不清-1和4294967295关系的缘故。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP