【问题标题】:Data conversion error converting "'1TRUE'数据转换错误转换“'1TRUE'
【发布时间】:2014-03-04 12:38:40
【问题描述】:

我正在尝试运行以下查询: 准备:

INSERT INTO manual_sentences (project_id, sentence_id, weight, is_from_external_source, original_sentence_id, `partition`) 
VALUES (?, ?, ?, ?, ?, ?) 
ON DUPLICATE KEY UPDATE weight = weight + ?, is_from_external_source = is_from_external_source || ?

参数:42(Long), 1316(Long), 1(Integer), true(Boolean), 1315(Long), 0(Integer), 1(Integer), true(Boolean)

如果is_from_external_source = is_from_external_source || ? 启动,在 MySQL 模式下运行的 H2 DB 上会返回以下错误:

org.springframework.dao.DataIntegrityViolationException: 
### Error updating database.  Cause: org.h2.jdbc.JdbcSQLException: Data conversion error converting "'1TRUE' (MANUAL_SENTENCES: IS_FROM_EXTERNAL_SOURCE TINYINT DEFAULT 0 NOT NULL)"; SQL statement:
INSERT INTO manual_sentences (project_id, sentence_id, weight, is_from_external_source, original_sentence_id, `partition`) 
        VALUES (?, ?, ?, ?, ?, ?)
        ON DUPLICATE KEY UPDATE weight = weight + ?, is_from_external_source = is_from_external_source || ? [22018-175]
### The error may involve com.nuance.entrd.mc.nes.persistence.mappers.IManualSentenceMapper.addManualSentenceObject-Inline
### The error occurred while setting parameters
### SQL: INSERT INTO manual_sentences (project_id, sentence_id, weight, is_from_external_source, original_sentence_id, `partition`)         VALUES (?, ?, ?, ?, ?, ?)        ON DUPLICATE KEY UPDATE weight = weight + ?, is_from_external_source = is_from_external_source || ?
### Cause: org.h2.jdbc.JdbcSQLException: Data conversion error converting "'1TRUE' (MANUAL_SENTENCES: IS_FROM_EXTERNAL_SOURCE TINYINT DEFAULT 0 NOT NULL)"; SQL statement:
INSERT INTO manual_sentences (project_id, sentence_id, weight, is_from_external_source, original_sentence_id, `partition`) 
        VALUES (?, ?, ?, ?, ?, ?)
        ON DUPLICATE KEY UPDATE weight = weight + ?, is_from_external_source = is_from_external_source || ? [22018-175]
; SQL []; Data conversion error converting "'1TRUE' (MANUAL_SENTENCES: IS_FROM_EXTERNAL_SOURCE TINYINT DEFAULT 0 NOT NULL)"; SQL statement:
INSERT INTO manual_sentences (project_id, sentence_id, weight, is_from_external_source, original_sentence_id, `partition`) 
        VALUES (?, ?, ?, ?, ?, ?)
        ON DUPLICATE KEY UPDATE weight = weight + ?, is_from_external_source = is_from_external_source || ? [22018-175]; nested exception is org.h2.jdbc.JdbcSQLException: Data conversion error converting "'1TRUE' (MANUAL_SENTENCES: IS_FROM_EXTERNAL_SOURCE TINYINT DEFAULT 0 NOT NULL)"; SQL statement:
INSERT INTO manual_sentences (project_id, sentence_id, weight, is_from_external_source, original_sentence_id, `partition`) 
        VALUES (?, ?, ?, ?, ?, ?)
        ON DUPLICATE KEY UPDATE weight = weight + ?, is_from_external_source = is_from_external_source || ? [22018-175]

除了传递整数而不是布尔值之外,我知道如何克服这个问题吗?

谢谢

【问题讨论】:

    标签: h2


    【解决方案1】:

    我建议使用

    is_from_external_source = is_from_external_source or ?
    

    相反。我认为将or 用于布尔“或”而不是|| 更合乎逻辑,因为|| 是连接操作。

    此问题与H2 issue 553 重复。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-06-10
      • 1970-01-01
      • 2021-03-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多