从perl插入mysql时的dup条目

时间:2011-05-23 01:25:24

标签: mysql perl insert dbi

我正在从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             my $ query = $ db-> do($ query_insert);

id = 2576246314 query insert = INSERT INTO calendar(id)VALUES(2576246314) query = 1

id = 2576246678 query insert = INSERT INTO calendar(id)VALUES(2576246678) DBD :: mysql :: db执行失败:在./calendar_run.pl第133行为键'PRIMARY'复制条目'2147483647'。 query =

id = 2576246781 query insert = INSERT INTO calendar(id)VALUES(2576246781) DBD :: mysql :: db执行失败:在./calendar_run.pl第133行为键'PRIMARY'复制条目'2147483647'。 query =

id = 2576247610 query insert = INSERT INTO calendar(id)VALUES(2576247610) DBD :: mysql :: db执行失败:在./calendar_run.pl第133行为键'PRIMARY'复制条目'2147483647'。 query =

id = 2576247737 query insert = INSERT INTO calendar(id)VALUES(2576247737) DBD :: mysql :: db执行失败:在./calendar_run.pl第133行为键'PRIMARY'复制条目'2147483647'。 query =

id = 2576247756 query insert = INSERT INTO calendar(id)VALUES(2576247756) DBD :: mysql :: db执行失败:在./calendar_run.pl第133行为键'PRIMARY'复制条目'2147483647'。 query =

id = 2576247766 query insert = INSERT INTO calendar(id)VALUES(2576247766) DBD :: mysql :: db执行失败:在./calendar_run.pl第133行为键'PRIMARY'复制条目'2147483647'。 query =

id = 2576248369 query insert = INSERT INTO calendar(id)VALUES(2576248369) DBD :: mysql :: db执行失败:在./calendar_run.pl第133行为键'PRIMARY'复制条目'2147483647'。 query =

id = 2576248388 query insert = INSERT INTO calendar(id)VALUES(2576248388) DBD :: mysql :: db执行失败:在./calendar_run.pl第133行为键'PRIMARY'复制条目'2147483647'。 query =

id = 2576248660 query insert = INSERT INTO calendar(id)VALUES(2576248660) DBD :: mysql :: db执行失败:在./calendar_run.pl第133行为键'PRIMARY'复制条目'2147483647'。 query =

id = 2576249706 query insert = INSERT INTO calendar(id)VALUES(2576249706) DBD :: mysql :: db执行失败:在./calendar_run.pl第133行为键'PRIMARY'复制条目'2147483647'。 query =

id = 2576250254 query insert = INSERT INTO calendar(id)VALUES(2576250254) DBD :: mysql :: db执行失败:在./calendar_run.pl第133行为键'PRIMARY'复制条目'2147483647'。 query =

2 个答案:

答案 0 :(得分:7)

听起来id的类型太短了。该值(2147683647)是最大有符号32位整数值。尝试使用更大的ID。

答案 1 :(得分:0)

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