【发布时间】:2013-01-02 17:02:57
【问题描述】:
我正在帮助一家非营利组织将 MS-Access 数据迁移到 MYSQL。因此,我将数据移植到 MYSQL,并使用 ODBC 在 ms-access 中创建了对 MYSQL 表的链接。大多数现有的 SQL 都可以正常工作。但是我被这个错误难住了 -
您的 SQL 语法有错误,请检查与您的 MySQL 服务器版本相对应的手册,以获得在 UNION 附近使用的正确语法...
我已经将带有 7 个 UNIONS 的 SQL 剥离到仍然失败的基础上。
(SELECT 1 as A FROM Households H)
UNION ALL
(SELECT 2 as A FROM Households H)
UNION ALL
(SELECT 3 as A FROM Households H)
让我明白的部分是,只要我在 SQL 下面只运行一个 UNION 含义,我就能够成功运行,但是当我添加第三个 UNION 时,它会给出 ODBC 错误
(SELECT 1 as A FROM Households H)
UNION ALL
(SELECT 2 as A FROM Households H)
我尝试使用 ` 或 ' 或 [] 但这些都没有帮助。我对这个错误感到沮丧的原因是它要么全部失败,要么全部失败,只有在使用两个或多个 UNION 子句时才会出错。这可能是驱动程序中的潜在错误吗?
我在带有 ms-access 和 32 位驱动程序的 win-7 64 位上使用 mysql-64 位。这不应该是架构问题,因为我能够使用多个 UNION 运行其他查询,并访问同一组表。
如果有人能指点如何进一步调试,那就太好了。
【问题讨论】:
-
(原始)查询是否从常规(非 ODBC)MySQL 客户端运行?
-
包裹
select * (...) as foo有帮助吗?注意:A、B、C 让我很奇怪,因为它没有做任何有用的事情...... -
原始 SQL 从 MS-Access 前端访问 ms-access 后端运行良好。原始 SQL 中有一个 Dateadd 函数,所以我将它移植到 MYSQL 并能够直接在 MYSQL 中运行查询。问题是我不能对用 ms-access 编码的查询使用 mysql 语法,所以我必须按原样使用原始查询。
-
我曾尝试选择HouseholdID,即Households中的PK,但仍然出现同样的错误。
-
对于常规的非 odbc 客户端,我的意思是命令行 mysql 工具、HeidiSQL 或类似的东西。我很确定 Microsoft Access 通过 ODBC 连接。
标签: mysql ms-access odbc driver