2011-05-23 62 views
0

我正在從perl插入到mysql數據庫中。我在第一次插入後出現重複錯誤。這裏是我用於插入的代碼。我從json響應中拉出一個id。我輸出了我在代碼下面收到的東西當從perl插入到MySQL中時進入dup條目

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 查詢插入= INSERT INTO日曆(ID)VALUES(2576246314) 查詢= 1

ID = 2576246678 查詢插入= INSERT INTO日曆(ID)VALUES(2576246678) DBD :: MySQL的:: DB做失敗:重複的項目 '2147483647' 的關鍵 '主要' 在./calendar_run.pl線133 查詢=

ID = 2576246781 查詢插入= INSERT INTO日曆(ID)VALUES(2576246781) DBD :: mysql :: db失敗:重複條目'2147483647'fo R鍵 '主要' 在./calendar_run.pl線133 查詢=

ID = 2576247610 查詢插入= INSERT INTO日曆(ID)VALUES(2576247610) DBD :: mysql的:: DB做失敗:進入 '2147483647' 的關鍵 '主要' 在./calendar_run.pl線133 查詢=

ID = 2576247737 查詢插入= INSERT INTO日曆(ID)VALUES(2576247737) DBD :: MySQL的數據庫::做失敗:重複'2147483647'關鍵'PRIMARY'在./calendar_run.pl行133. query =

id = 2576247756 查詢insert = INSERT INTO日曆(id)VALUES(2576247756) DBD :: mysql :: db做失敗:重複條目'2147483647'爲'PRIMARY',位於./calendar_run.pl行133. 查詢=

ID = 2576247766 查詢插入= INSERT INTO日曆(ID)VALUES(2576247766) DBD :: mysql的:: DB做失敗:重複的項目 '2147483647' 在./calendar_run.pl線路鍵 '主要' 133. 查詢=

ID = 2576248369 查詢插入= INSERT INTO日曆(ID)VALUES(2576248369) DBD :: mysql的:: DB做失敗ED:重複條目 '2147483647' 的鍵 '主要' 在./calendar_run.pl管線133 查詢=

ID = 2576248388 查詢插入= INSERT INTO日曆(ID)VALUES(2576248388) DBD :: MySQL的:: DB做失敗:進入 '2147483647' 的關鍵 '主要' 在./calendar_run.pl線133 查詢=

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做失敗:進入 '2147483647' 的關鍵 '主要' 在./calendar_run。 PL線133 查詢=

ID = 2576250254 查詢插入= INSERT INTO日曆(ID)VALUES(2576250254) DBD :: mysql的:: DB做失敗:重複的項目 '2147483647' 的關鍵 '主要' 在./calendar_run.pl line 133. query =

+1

我們需要看看日曆的表結構如何, – 2011-05-23 01:31:08

+4

請在您的代碼中使用DBI佔位符。現在任何人都可以通過在你的JSON中添加有趣的東西來打你的數據庫。 http://search.cpan.org/~timb/DBI-1.616/DBI.pm#Placeholders_and_Bind_Values – friedo 2011-05-23 03:06:23

回答

7

聽起來像id的類型太短。該值(2147683647)是最大有符號32位整數值。嘗試使用更大尺寸的ID。

0

我得到了同樣的錯誤使用DBD :: MySQL。下面是我發現的:「Perl將返回的值存儲爲字符串,但在數值上下文中使用這些值時會自動將其轉換爲數字,這會導致它們被截斷爲2147483647,因爲Perl使用帶符號的LONG值存儲這些數字。「 (這裏:http://www.tol.it/doc/MySQL/chapter7.html)。 但我還沒有發現任何公共bug。