ON DUPLICATE KEY导致超时

时间:2012-08-29 19:37:29

标签: mysql sql insert on-duplicate-key

我目前在MySQL数据库上运行以下SQL语句:

INSERT INTO `Table` (`Col1`, `Col2`, `Col3`) VALUES ('a','b','c')
ON DUPLICATE KEY UPDATE `Col1`=`Col1`, `Col2`=`Col2`, `Col3`=`Col3`

但是,每次我运行它时,都会收到以下错误:#1205 - Lock wait timeout exceeded; try restarting transaction。这太可怕了,因为我不知道到底出了什么问题。我的目的是更新现有行的所有值(id除外,这是表的主键)。

如果您有任何想法,请告诉我!

编辑:更多信息... id是一个自动递增的字段。还有另一个UNIQUE列(我们称之为IdentityNo,所以我希望声明要做的是: 1.如果{{1}中没有冲突,则插入} 2.如果发生冲突,请更新现有行(不更改IdentityNo)。

1 个答案:

答案 0 :(得分:0)

如果要引用上述语句的insert部分中列的值,则需要使用值(column_name)。 你必须使用类似的东西 INSERT INTO Table (Col1, Col2, Col3) VALUES ('a','b','c') ON DUPLICATE KEY UPDATE Col1=values(Col1), Col2=values(Col2), Col3=values(Col3)