【问题标题】:MySQL Batchupdate() with ON DUPLICATE KEY UPDATEMySQL Batchupdate() 与 ON DUPLICATE KEY UPDATE
【发布时间】:2013-01-02 13:18:51
【问题描述】:

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

测试用例: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() 一起使用。理想情况下应该是这样,因为据我所知,工作没有什么不同。

我应该怎么做才能做到这一点?

【问题讨论】:

  • 你能添加一些代码吗?

标签: java mysql spring batch-updates


【解决方案1】:

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

来自MySQL manual

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. INSERT Syntax
13.2.5.3. INSERT ... ON DUPLICATE KEY UPDATE Syntax

【讨论】:

    猜你喜欢
    • 2018-05-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-22
    • 2010-10-07
    • 2011-06-29
    相关资源
    最近更新 更多