使用重复键更新

时间:2016-09-22 12:48:50

标签: java mysql sql jdbc mariadb

我有以下表格cl:

id - int(10) primary key
contact - int(10)
list - int(10)

在联系人和列表上使用唯一索引。当我通过100条记录同时运行以下查询时:

INSERT INTO cl(list, contact) VALUES (?, ?) ON DUPLICATE KEY UPDATE cl.id = cl.id

在高压下,它失败了大约20%,并出现以下错误:

java.sql.SQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'ON DUPLICATE KEY UPDATE cl.id = cl.id' at line 1

80%的查询运行得很好。当我使用相同的参数重新运行失败的查询时,再次20%失败。

为什么有些查询会失败,第二次执行时不会产生错误?

1 个答案:

答案 0 :(得分:1)

将查询更改为

INSERT IGNORE INTO cl(list, contact) VALUES (?, ?)

解决了这个问题。虽然目前还不清楚为什么mysql会抛出java.sql.SQLSyntaxErrorException而不是更明确的东西。