使用Azure Data Factory从MySQL摄入数据时遇UInt64类型错误
解决MySQL无符号BigInt到Azure SQL的Copy Activity报错
问题根源
Self-Hosted IR读取MySQL无符号bigint列时,会将其识别为UInt64类型,而Azure SQL的驱动不支持直接处理该类型——哪怕你把目标列设为varchar或decimal,默认的类型转换逻辑不会自动处理这个原始类型,因此报错。
方案1:在Copy Activity列映射中强制转换
直接在Copy Activity的映射环节对id列做类型转换:
- 打开Copy Activity的「映射」标签
- 找到
id列的映射规则,在源列表达式中使用toString(id)(转字符串,对应目标varchar列)或toDecimal(id)(转十进制,对应目标decimal(20,0)列) - 确保目标列类型和转换后的类型完全匹配
方案2:修改MySQL源连接字符串
在MySQL源数据集的连接字符串中添加参数,让驱动自动转换无符号类型:
- 编辑连接字符串,追加
;ConvertUnsigned=true - 这个参数会让MySQL驱动把无符号bigint转换为有符号bigint,Self-Hosted IR会识别为
Int64,可直接和Azure SQL的bigint/decimal/varchar映射
方案3:改用Data Flow处理
如果Copy Activity的映射仍不生效,换用Data Flow:
- 创建Data Flow,读取MySQL源数据
- 添加「派生列」转换,对
id列执行toString(id)或toDecimal(id)转换 - 将转换后的数据写入Azure SQL目标表,匹配对应列类型
方案4:修改MySQL源表(若有权限)
如果可以改动源表,移除id列的无符号属性,改为普通bigint。此时Self-Hosted IR会识别为Int64,就能正常完成数据复制
内容的提问来源于stack exchange,提问作者sakis
相关产品推荐
相关产品推荐

