我有以下表格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%失败。
为什么有些查询会失败,第二次执行时不会产生错误?
答案 0 :(得分:1)
将查询更改为
INSERT IGNORE INTO cl(list, contact) VALUES (?, ?)
解决了这个问题。虽然目前还不清楚为什么mysql会抛出java.sql.SQLSyntaxErrorException而不是更明确的东西。