SSIS从SQL Server导数据到MySQL遇'Unknown column p1'错误求助
解决SQL Server转MySQL时"Unknown column 'p1' in 'field list'"错误的方案
Error: 0xC020844B at Data Flow Task, ADO NET Destination [2]: An exception has occurred during data insertion, the message returned from the provider is: Unknown column 'p1' in 'field list'
针对所有表导出均触发该错误的情况,可按以下步骤排查解决:
1. 升级/重装MySQL ADO.NET驱动
- 卸载当前的MySQL Connector/NET,安装匹配VS2019的最新稳定版驱动。旧版本驱动存在参数化查询BUG,会错误生成
p1这类未映射的占位符字段。
2. 调整ADO.NET Destination组件配置
- 选中数据流任务中的
ADO NET Destination,进入编辑界面:- 连接管理器:确认目标表选择正确,无错选含
p1列的表; - 映射:检查源列与目标列的映射关系,确保无多余未映射项;
- 数据访问模式:将
Table or view - fast load改为Table or view,快速加载模式可能触发驱动异常逻辑。
- 连接管理器:确认目标表选择正确,无错选含
3. 修改MySQL的SQL模式设置
- 登录MySQL服务器,执行命令关闭严格SQL模式:
严格模式下的部分规则会干扰SSIS的插入逻辑,导致错误字段占位符生成。-- 全局生效,需重启服务 SET GLOBAL sql_mode = 'NO_ENGINE_SUBSTITUTION'; -- 会话级临时生效,用于快速测试 SET SESSION sql_mode = 'NO_ENGINE_SUBSTITUTION';
4. 禁用SSIS元数据预校验
- 右键数据流任务,打开属性面板,将
ValidateExternalMetadata设置为False。该属性开启时,SSIS预校验元数据可能与MySQL的元数据返回不兼容,引发异常。
5. 切换连接方式测试
- 放弃ADO.NET连接,改用MySQL ODBC驱动配置连接管理器,重新创建数据流任务测试。ODBC驱动在SSIS中的兼容性通常更稳定,可规避ADO.NET驱动的特定BUG。
内容的提问来源于stack exchange,提问作者Dave Carpenter
相关产品推荐
相关产品推荐

