【问题标题】:java.sql.SQLException: Data truncated for column 'version' at row 221651java.sql.SQLException:第 221651 行的“版本”列的数据被截断
【发布时间】:2023-03-09 04:13:01
【问题描述】:

当我使用 Navicat for MySQL 成功运行 sql,但使用 java jdbc 程序失败时。这样的 sql:

INSERT INTO version_event (app_token, event_id, version) 
SELECT
    a.app_token,
    a.event_name event_id,
    a.version
FROM
    day_custom_event a
LEFT JOIN custom_events b ON a.event_name = b.event_id
WHERE
    a.channel = 'all'
AND a.country = 'all'
AND a.version != 'all'
GROUP BY
    a.app_token,
    a.event_name,
    a.version;"

还有这样的表格: 在此处输入图片说明

而jdbc程序是:

JDBC 程序:

【问题讨论】:

    标签: mysql jdbc sqlexception


    【解决方案1】:

    您在表中设置了列版本数据类型 varchar(50)。如果您插入字符长度超过 50 的任何内容,则该最大值允许 5o 个字符,那么它将在 java 中给您数据截断错误。

    因此,解决方案要么将大小从 50 增加,要么更改列的数据类型。

    【讨论】:

    • 如果列版本长度太短,为什么使用Navicat for MySQL可以成功运行sql?
    • SQL 查询将执行,但会在第 50 个字符后截断数据。刷新表格并再次检查。
    • 当我增加尺寸时,它起作用了。非常感谢。
    【解决方案2】:

    通常当您尝试保存一些对于列来说太长的数据时会出现问题。在这种情况下,版本列的值太长。

    这意味着该字段太小而无法保存数据,因此请检查该列的数据类型定义并在必要时增加其大小。

    【讨论】:

      猜你喜欢
      • 2013-04-20
      • 1970-01-01
      • 2015-02-19
      • 2014-01-09
      • 2021-03-14
      • 1970-01-01
      • 2013-12-24
      • 2019-11-18
      • 2021-08-19
      相关资源
      最近更新 更多