我有一个 SSIS 包,用于将数据从 MySQL 数据库导出到 SQL 数据库。出于某种原因,我只能使用 ODBC Source 项读取数据,但无法预览表格,此外,在进行其他一些测试时,我发现我也无法使用 ODBC Destination 项插入数据。
每当我尝试时,我都会收到此错误:
ERROR [42000] [MySQL][ODBC 8.0(w) Driver][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'
错误变为警告。
设置 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 个不同的连接来完成。