perl - DBD::SQLite::st 执行失败:数据类型不匹配

标签 perl dbi type-mismatch

这是一段 perl 代码:

sub insert_timesheet {
    my $dbh = shift;
    my $entryref = shift;
    my $insertme = join(',', @_);
    my $values_template = '?, ' x scalar(@_);

    chop $values_template;
    chop $values_template; #remove trailing comma

    my $insert = "INSERT INTO timesheet( $insertme ) VALUES ( $values_template );";
    my $sth = $dbh->prepare($insert);
      debug("$insert");
    my @values;
    foreach my $entry (@_){
        push @values, $$entryref{$entry}
    }
      debug("@values");
    my $rv = $sth->execute( @values ) or die $dbh->errstr;
      debug("sql return value: $rv");
    $dbh->disconnect;
}

我看到了错误

DBD::SQLite::st execute failed: datatype mismatch at timesheet line 85.

$insert 的值:

[INSERT INTO timesheet( idx,Start_Time,End_Time,Project,Ticket_Number,Site,Duration,Notes ) VALUES ( ?, ?, ?, ?, ?, ?, ?, ? );]

这里是@values:

[null '1270950742' '1270951642' 'asdf' 'asdf' 'adsf' 15 '']

这是“时间表”的架构

timesheet( 
    idx INTEGER PRIMARY KEY AUTOINCREMENT 
    , Start_Time VARCHAR
    , End_Time VARCHAR
    , Duration INTEGER
    , Project VARCHAR
    , Ticket_Number VARCHAR
    , Site VARCHAR
    , Notes VARCHAR
)

事情是这样安排的:

----
Insert Statement
Schema
@values
----

idx
idx INTEGER PRIMARY KEY AUTOINCREMENT
null:  # this is not a mismatch, passing null will allow auto-increment.

Start_Time
Start_Time VARCHAR
'1270950742'

End_Time
End_Time VARCHAR
'1270951642'

Project
Project VARCHAR
'asdf'

Ticket_Number
Ticket_Number VARCHAR
'asdf'

Site
Site VARCHAR
'adsf'

Duration
Duration INTEGER
15

Notes
Notes VARCHAR
''

...我看不到数据类型不匹配。

最佳答案

问题在于为 idx 插入“空”。不显式插入 'idx' 是可以的,自动递增会处理这个......

应该早点分解它。

关于perl - DBD::SQLite::st 执行失败:数据类型不匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2615922/

相关文章:

arrays - 从制表符分隔的文本文件列创建数组

linux - OCIEnvNlsCreate 错误。检查 ORACLE_HOME (Linux) env var 或 PATH (Windows) 和/或 NLS 设置、权限等

mysql - Perl DBI 创建表错误

haskell - Haskell Monads 中的 `let .. in do` 和 `<-` 表示法有什么区别?

loops - foreach 查找所有缺失值

perl - 为什么输出没有重定向到文件中?

perl - 未知指令 "perl_modules"

perl - 如何评估字符串中的 shell 变量?

postgresql - SET SESSION AUTHORIZATION 多用户 mod-perl2 连接缓存的安全设计

java - 如何使用 Flickrj api 向 Flickr 发送简单的 ping 测试