perl DBI读取sqlserver数据库字符串截断的问题

张小凡vip
《MongoDB游记》作者
博客专家认证
2013-11-07 05:30:41

select时报错
DBD::ODBC::st fetchrow_arrayref failed: st_fetch/SQLFetch (long truncated DBI attribute LongTruncOk not set and/or LongReadLen too small) (SQL-HY000)


这种情况加上
$dbh_mssql->{LongTruncOk} = 1;

可以解决。

但是这种方式会截断字符串。

我不想截断字符串,想要完整的读取出来。看了下资料 说是可以设置Long的长度。

使用如下:
$dbh_mssql->{LongReadLen} = 512 *1024;

单独使用时无效。
还是报同样的错误。
$dbh_mssql->{LongReadLen} = 512 *1024;
$dbh_mssql->{LongTruncOk} = 0;
时还是报错

但是跟 $dbh_mssql->{LongTruncOk} = 1;一起使用时就没问题 只是还是会截断。


有没有大神知道正确的用法? 还是说 我这里的len长度还不够? 2048*2048还是不行
...全文
164 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
张小凡vip 2013-11-07
  • 打赏
  • 举报
回复
$sql_select ="select top 5 [name] , [address] , [developer] , CAST([othercondition] as TEXT), [projectsquare] , [usinglandarea] from new_baseinfo"; 注意红色部分。 原来还涉及到数据类型的问题。把被截断的字段改为text。 然后设置。 my $dbh_mssql=DBI->connect("dbi:ODBC:$source_name",$source_user_name,$source_user_psd); $dbh_mssql->{LongTruncOk}=1; $dbh_mssql->{LongReadLen} = 1048576*1024; print "LongReadLen: $dbh_mssql->{LongReadLen}\n"; 就可以了
张小凡vip 2013-11-07
  • 打赏
  • 举报
回复
解决了 mlgb的~ 弄了一天perl的文档太TM少了 难道都没人在用么 来个人接分

37,718

社区成员

发帖
与我相关
我的任务
社区描述
JavaScript,VBScript,AngleScript,ActionScript,Shell,Perl,Ruby,Lua,Tcl,Scala,MaxScript 等脚本语言交流。
社区管理员
  • 脚本语言(Perl/Python)社区
  • IT.BOB
加入社区
  • 近7日
  • 近30日
  • 至今

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