从 perl 插入 mysql 时的 dup 条目

问题描述 投票:0回答:2

我正在从 Perl 插入 mysql 数据库。第一次插入后出现重复错误。这是我用于插入的代码。我正在从 json 响应中提取一个 id。我在代码下面收到了我收到的输出

  foreach my $listing(@{$json_text->{listings}})
    {
      my $id = $listing->{id};
   print "\nid = $id \n";


    # DO THE INSERT
    my $query_insert = "INSERT INTO calendar (id) VALUES ($id)";
    print "query insert = $query_insert \n";
    my $query = $db->do($query_insert); 
   print "query = $query \n";

    } #end foreach

这是我收到的输出。 (返回没有复制到正确的位置。因此下面的内容看起来不正确,但正确的数据在那里)。这就像 133 我的 $query = $db->do($query_insert);

id=2576246314 查询插入 = INSERT INTO 日历 (id) VALUES (2576246314) 查询 = 1

id=2576246678 查询插入 = INSERT INTO 日历 (id) VALUES (2576246678) DBD::mysql::db 执行失败:./calendar_run.pl 第 133 行处的键“PRIMARY”重复条目“2147483647”。 查询 =

id=2576246781 查询插入 = INSERT INTO 日历 (id) VALUES (2576246781) DBD::mysql::db 执行失败:./calendar_run.pl 第 133 行处的键“PRIMARY”重复条目“2147483647”。 查询 =

id=2576247610 查询插入 = INSERT INTO 日历 (id) VALUES (2576247610) DBD::mysql::db 执行失败:./calendar_run.pl 第 133 行处的键“PRIMARY”重复条目“2147483647”。 查询 =

id=2576247737 查询插入 = INSERT INTO 日历 (id) VALUES (2576247737) DBD::mysql::db 执行失败:./calendar_run.pl 第 133 行处的键“PRIMARY”重复条目“2147483647”。 查询 =

id=2576247756 查询插入 = INSERT INTO 日历 (id) VALUES (2576247756) DBD::mysql::db 执行失败:./calendar_run.pl 第 133 行处的键“PRIMARY”重复条目“2147483647”。 查询 =

id=2576247766 查询插入 = INSERT INTO 日历 (id) VALUES (2576247766) DBD::mysql::db 执行失败:./calendar_run.pl 第 133 行处的键“PRIMARY”重复条目“2147483647”。 查询 =

id=2576248369 查询插入 = INSERT INTO 日历 (id) VALUES (2576248369) DBD::mysql::db 执行失败:./calendar_run.pl 第 133 行处的键“PRIMARY”重复条目“2147483647”。 查询 =

id=2576248388 查询插入 = INSERT INTO 日历 (id) VALUES (2576248388) DBD::mysql::db 执行失败:./calendar_run.pl 第 133 行处的键“PRIMARY”重复条目“2147483647”。 查询 =

id=2576248660 查询插入 = INSERT INTO 日历 (id) VALUES (2576248660) DBD::mysql::db 执行失败:./calendar_run.pl 第 133 行处的键“PRIMARY”重复条目“2147483647”。 查询 =

id=2576249706 查询插入 = INSERT INTO 日历 (id) VALUES (2576249706) DBD::mysql::db 执行失败:./calendar_run.pl 第 133 行处的键“PRIMARY”重复条目“2147483647”。 查询 =

id=2576250254 查询插入 = INSERT INTO 日历 (id) VALUES (2576250254) DBD::mysql::db 执行失败:./calendar_run.pl 第 133 行处的键“PRIMARY”重复条目“2147483647”。 查询 =

mysql perl insert dbi
2个回答
7
投票

听起来 id 的类型太短了。 “重复条目”消息中的值 (2147483647) 是最大有符号 32 位整数值。尝试使用更大尺寸的 ID。


0
投票

我使用 DBD::MySQL 遇到了同样的错误。这是我发现的:“Perl 将返回的值存储为字符串,但当您在数字上下文中使用这些值时,它会自动将它们转换为数字。这将导致它们被“截断”为 2147483647,因为 Perl 使用带符号的 LONG 值来存储这样的数字。” (此处:http://www.tol.it/doc/MySQL/chapter7.html)。 但我还没有发现任何公共错误。

© www.soinside.com 2019 - 2024. All rights reserved.