You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Kafka Connect同步MySQL时遇BIGINT数据范围异常求助

MySQL到MySQL Kafka Connect同步:BIGINT范围错误解决方案

错误信息

org.apache.kafka.connect.errors.DataException: com.mysql.jdbc.exceptions.jdbc4.MySQLDataException: '13645356371071579777' in column '1' is outside valid range for the datatype BIGINT.

问题原因

你的student表中id字段定义为bigint(20) unsigned,但Kafka Connect JDBC源连接器默认将无符号大整数解析为有符号BIGINT类型。有符号BIGINT的最大值为9223372036854775807,而你的ID值13645356371071579777远超出这个范围,因此触发范围错误。

解决方案

方案1:配置连接器适配无符号类型

在JDBC源连接器配置中添加numeric.mapping=best_fit,该参数会让连接器自动匹配数据库字段到最合适的Kafka Connect数据类型,对无符号大整数使用无符号的INT64表示,避免溢出。

修改后的完整配置:

name=source-student-table
connector.class=io.confluent.connect.jdbc.JdbcSourceConnector
connection.url=jdbc:mysql://hostname/schema_name
dialect.name=MySqlDatabaseDialect
connection.user=user
connection.password=password
topic.prefix=student
query=SELECT id, created_at, updated_at, uuid FROM student
mode=timestamp+incrementing
timestamp.column.name=updated_at
incrementing.column.name=id
tasks.max=1
numeric.mapping=best_fit

方案2:调整数据库字段类型(可选)

如果业务允许,可将id字段改为signed bigint(20),但需确保现有及未来数据不会超过有符号BIGINT的最大值9223372036854775807。此方案不适用于已存在超范围数据的场景。

方案3:查询时转换为字符串

修改query配置,将无符号ID转换为字符串类型,绕过数值范围限制:

query=SELECT CAST(id AS CHAR) AS id, created_at, updated_at, uuid FROM student

注意:下游写入目标MySQL时,需确保目标表的id字段能兼容字符串输入,或可自动转换为对应数值类型。


内容的提问来源于stack exchange,提问作者Elbo Shindi Pangestu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.21 18:42:41