小编use*_*347的帖子

如何修复 SSIS 中的 ODBC Driver 8.0 SQL 语法错误?

我有一个 SSIS 包,用于将数据从 MySQL 数据库导出到 SQL 数据库。由于某种原因,我只能使用 ODBC 源项读取数据,但无法预览表,而且在进行其他一些测试时,我发现也无法使用 ODBC 目标项插入数据。

每当我尝试时,我都会收到此错误:

错误 [42000] [MySQL][ODBC 8.0(w) 驱动程序][mysqld-5.7.23]您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,了解TABLENAME在第 1 行 (myodbc8w.dll) 的“”附近使用的正确语法。

我正在使用 MySQL 5.7.23 和 MySQL Connector/ODBC 8.0。我尝试过在 ANSI 和 Unicode 连接器之间切换;降级连接器版本(尝试过 5.3、5.2 和 5.1);更改数据库、表和列编码;更改 ODBC Source 项中的数据访问模式(默认使用“表名称”);重新做任务。即使在不同的计算机和数据库上,一切都会导致相同的错误。

编辑:

使用@Hadi 第二种解决方法会产生一些有趣的结果(第一个解决方法对我不起作用)。

使用 ADO.NET 或 ODBC 连接器时,提供的查询会导致错误。

错误代码:1231。变量“sql_mode”无法设置为“NO_AUTO_CREATE_USER”的值

将查询修改为后

set sql_mode = 'STRICT_TRANS_TABLES, NO_ENGINE_SUBSTITUTION, ANSI_QUOTES'

错误更改为警告。

set sql_mode='STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION,ANSI_QUOTES' 0 行受影响,1 条警告:3135 'NO_ZERO_DATE'、'NO_ZERO_IN_DATE' 和 'ERROR_FOR_DIVISION_BY_ZERO' sql 模式应与严格模式一起使用。它们将在未来的版本中与严格模式合并。

尽管如此,它还是部分起作用了。任何选定表名称周围的任何引号、重音符号或任何其他符号都必须删除。这使得它在插入数据时工作正常,但在检索数据时,必须通过 SQL 命令或创建 2 个不同的连接来完成。

mysql sql-server odbc ssis mysql-odbc-connector

5
推荐指数
1
解决办法
1万
查看次数

标签 统计

mysql ×1

mysql-odbc-connector ×1

odbc ×1

sql-server ×1

ssis ×1