我正在使用batchUpdate()
在表格中插入多条记录。根据要求,如果主键在插入时存在重复值,则应使用最新接收的数据进行更新,因此我尝试在ON DUPLICATE KEY UPDATE
语句中使用INSERT
。当我使用单个插入时,ON DUPLICATE KEY UPDATE
效果很好,但是当我使用batchupdate()
进行相同查询时,它会出错。错误如下:
Testcase:testVehicleTracking(com.em.ert.test.TrackingServiceTest):导致错误 PreparedStatementCallback;错误的SQL语法[INSERT INTO test_tracking(sino,material_id,material_type,vehicle_position,rundown_num,msg_type,msg_status,msg_timestamp)VALUES(?,?,?,?,?,?,?,?)ON DUPLICATE KEY UPDATE];嵌套异常是java.sql.BatchUpdateException:SQL语法中有错误;检查与MySQL服务器版本对应的手册,以便在第1行的''附近使用正确的语法
我不明白为什么ON DUPLICATE KEY UPDATE
不能用于batchupdate()。理想情况下应该是因为在我看来工作中没有任何不同。
我应该做些什么来实现这个目标?
答案 0 :(得分:2)
ON DUPLICATE KEY UPDATE子句后,您缺少列分配。
来自MySQL manual:
<强> 13.2.5。 INSERT语法
INSERT [LOW_PRIORITY | DELAYED | HIGH_PRIORITY] [IGNORE]
[INTO] tbl_name [(col_name,...)]
{VALUES | VALUE} ({expr | DEFAULT},...),(...),...
[ ON DUPLICATE KEY UPDATE
col_name=expr
[, col_name=expr] ... ]
13.2.5. INSERT Syntax
13.2.5.3. INSERT ... ON DUPLICATE KEY UPDATE Syntax