2012-06-15 34 views
1

我想插入一些項目到MySQL數據庫。MySQL在python和mysql命令行中插入錯誤

當我在我的python腳本做到了,我得到了:

錯誤1062:對於重複鍵 'PRODUCT_CODE' 進入 '222'。 product_code是一個唯一的字段。

當我在mysql命令行做到了,我得到了:

錯誤1205(HY000):鎖定等待超時超過;嘗試重新啓動事務。

Mysql安裝在win32上;桌子的引擎是innodb。

代碼:

conn = mdb.connect(user = 'root', passwd = '[REMOVED]', db = 'vancl') 
cur = conn.cursor() 

sql2 = "insert into vancl.vancl_query1(product_code) values('100000')" 
print sql2 
cur.execute(sql2) 

cur.close() 
+0

也許這是關於鎖定的問題...我現在甚至無法刪除該表。 – Minglong

+0

現在,我重新創建一個與prev相同的表。在腳本中,沒有錯誤報告,但實際上沒有插入數據。在命令行中,插入sql是完美的。 – Minglong

+0

不幸的是,我的python體驗是有限的,所以其他人將不得不在這裏編鐘。 – 2012-06-15 02:47:21

回答

0

現在,我重新創建一個表與前一個表相同。在腳本中,沒有錯誤報告,但實際上沒有插入數據。在命令行中,插入sql是完美的。

如果您使用像InnoDB這樣的事務引擎,您的數據將不會保存,因爲MySqlDb默認爲自動關閉。要實際上將數據保存到數據庫,您必須致電提交

conn = mdb.connect(user = 'root', passwd = '[REMOVED]', db = 'vancl') 
cur = conn.cursor() 

sql2 = "insert into vancl.vancl_query1(product_code) values('100000')" 
print sql2 

cur.execute(sql2) 

//Commit the data 
conn.commit() 

cur.close() 
0

這意味着product_code列具有置於其上的唯一索引約束。唯一索引約束告訴MySQL一個字段不能有重複值,即每個字段必須是唯一。當那個值已經存在於列中某處時,你試圖將值222插入到product_code中會出現'重複條目'錯誤。

+0

但該列不包含我插入的值。我的桌子上只有三件物品,所以我對此很有信心。即使我試圖改變其他值,我也會得到同樣的錯誤。 – Minglong

+0

您尚未發佈您正在使用的代碼。你應該編輯你的問題,並這樣做。 – 2012-06-15 02:26:22