質問

ここではPerlコードのsnippitだ。

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 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
''

...私はデータ型の不一致を見ることはできません。

役に立ちましたか?

解決

あなたがそれを取得し、まだ(あるいは、問題が消滅ステップ何で参照)エラーを発揮することができますどのように小さな見て、小さく、同様のチャンクまであなたのコードを減らしてみてください。あなたは、単に裸の文字列クエリにexecute()を呼び出すことにより、多くのコードを削除し、insert文からフィールドを削除し始めることができます。

私は@valuesの内容を少し不審なよ、あなたはしている印刷こと - 間違いなく整数型と一致しませんすべての値を囲む引用符、でも整数が存在することが表示されます。

他のヒント

問題はIDXのために「ヌル」を挿入していました。明示的に「IDX」を挿入していないことはOKで、自動インクリメントは、その...

の世話をします

Shouldaダウン以前のことを分けます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top