我在随机替换期间收到以下错误:
DBD :: mysql :: st执行失败:错误的整数值:第1行第'列'列的'ð'
连续运行多个查询时出现此错误。它并不总是发生在同一条线上,并且这个错误并不总是完全相同。它是USUALLY“不正确的整数值”或“不正确的十进制值”,并且引号中的值总是更改并显示一些随机字符或字符集。
以下是我的代码生成的语句:
REPLACE INTO site SET id = ? ,sequence = ? ,sitenumber = ? ,startdate = ? ,enddate = ? ,damages = ? ,typedays = ? ,description = ?
当我转储传入的参数时,Data :: Dumper显示以下内容:
print Dumper(@params);
$VAR1 = '300';
$VAR2 = '1';
$VAR3 = '0';
$VAR4 = undef;
$VAR5 = '2012-03-09';
$VAR6 = '130';
$VAR7 = undef;
$VAR8 = 'COMPOSITE';
当然,这些值会因查询失败而有所不同。它们总是有效的数据,实际的SQL查询在控制台中正确运行。
相关代码如下
$db->{sth} = $dbh->prepare_cached($sql, { dbi_dummy => __FILE__.__LINE__ }, 3);
$db->{sth}->execute(@params) ;
如下替换第一行可以防止错误,但我们的应用程序将从缓存中获得相当多的收益。
$db->{sth} = $dbh->prepare($sql, { dbi_dummy => __FILE__.__LINE__ });
任何想法?
要求提供更多信息:
$ mysql -V mysql Ver 14.14 Distrib 5.1.61,适用于redhat-linux-gnu (x86_64)使用readline 5.1
$ cat / etc / * - 发布CentOS版本6.3(最终版)
DBD :: mysql.pm version 4.013
$ perl -v
这是为x86_64-linux-thread-multi构建的perl,v5.10.1(*)