1

我正在使用batchUpdate()在表中插入多条记录。根据要求,如果在插入主键时存在重复值,则应使用最新接收到的数据对其进行更新,因此我试图ON DUPLICATE KEY UPDATEINSERT语句中使用。当ON DUPLICATE KEY UPDATE我使用单个插入时效果很好,但是当我batchupdate()用于相同的查询时它会出错。错误如下:

测试用例:testVehicleTracking(com.em.ert.test.TrackingServiceTest): Caused an ERROR 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()。理想情况下应该是这样,因为据我所知,工作没有什么不同。

我应该怎么做才能实现这一目标?

4

1 回答 1

2

您在ON DUPLICATE KEY UPDATE 子句之后缺少列分配。

来自MySQL 手册

13.2.5. 插入语法

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. 插入语法
13.2.5.3。INSERT ... ON DUPLICATE KEY UPDATE 语法

于 2013-01-02T16:55:54.790 回答