SSIS中MySQL ODBC源报错DTS_E_PRIMEOUTPUTFAILED的解决求助
SSIS MySQL ODBC数据源报错(DTS_E_PRIMEOUTPUTFAILED/01004)解决建议
报错信息
[SSIS.Pipeline] Error: SSIS Error Code DTS_E_PRIMEOUTPUTFAILED. The PrimeOutput method on ODBC Source MySource returned error code 0x80004005. 当管道引擎调用PrimeOutput()时,该组件返回失败代码,此错误为致命错误,管道已停止执行,此前可能有更多相关错误信息。
[ODBC Source MySource [40]] Error: Open Database Connectivity (ODBC) error occurred. state: '01004'. Native Error Code: 0. [MySQL][ODBC 8.0(w) Driver][mysqld-5.6.47-log]
当前连接字符串
Driver={MySQL ODBC 8.0 Unicode Driver};server=0.0.0.0;uid=MyUser;database=NYDatabase;port=0000
可行解决步骤
- 匹配驱动与MySQL版本:ODBC 8.0驱动与MySQL 5.6版本跨度较大,易引发兼容性问题。建议替换为MySQL ODBC 5.3 Unicode Driver,该版本对MySQL 5.x系列支持更稳定。
- 完善连接字符串参数:
- 补充密码参数:追加
;pwd=你的数据库密码 - 替换占位符:将
server=0.0.0.0和port=0000改为实际的MySQL服务器IP与端口 - 添加字符集配置:加上
;charset=utf8mb4;或;Unicode=Yes;,避免字符集转换导致的数据截断
- 补充密码参数:追加
- 排查数据截断问题:ODBC状态码
01004对应数据截断错误,大概率是源表字段数据长度超过SSIS中定义的字段长度:- 单独测试每个字段的查询,定位触发截断的字段
- 调整SSIS目标字段的长度至足够容纳源数据,或在MySQL查询中对超长字段做截断处理(如
LEFT(your_column, 255))
- 开启ODBC驱动日志:在ODBC数据源管理器中找到对应的MySQL数据源,开启日志记录,获取更详细的错误细节以精准定位问题
- 验证权限与基础查询:
- 用ODBC数据源管理器测试连接是否成功
- 执行简单查询(如
SELECT * FROM your_table LIMIT 10)验证能否正常读取数据,排除查询语句或权限问题
- 检查SSIS运行账户权限:确保运行SSIS包的Windows账户或服务账户,对MySQL数据库拥有足够的读权限,避免因权限不足导致的隐性错误
内容的提问来源于stack exchange,提问作者Eddy
相关产品推荐
相关产品推荐

