【问题标题】:Truncated MySQL field when connections from MS Access从 MS Access 连接时截断 MySQL 字段
【发布时间】:2011-06-03 09:32:29
【问题描述】:

我在 MS Access 2003 中创建了一个指向 MySQL 表的链接表。我使用了我在 MySQL 站点上找到的 mysql-connector-odbc-5.1.6-win32 驱动程序。当我查看表格时,我只能在 VARCHAR(255) 字段中看到 70 个字符。有人在 MS Access 中使用 MySQL 有什么运气吗?

【问题讨论】:

  • 我用过 MySQL 4.x。我遇到的唯一问题是具有全文索引的表,Access 似乎不喜欢这种情况。

标签: mysql ms-access


【解决方案1】:

只是猜测,我不确定 70 是否是一个确切的数字,但是:

255/4 = 63.75 (so 63) 这意味着 255 字节的限制将只允许 63 个 4 字节字符。

我不确定 MySQL 上的某个地方是否Access 它使编码变得奇怪。

如果您的表格使用更大的字符串编码,可能是限制了字符数?

我也可能完全错了。

【讨论】:

    【解决方案2】:

    自从我在 MS Access 中使用 MySQL 表已经有一段时间了,但据我记得,我不认为 Access 在链接表时直接使用 MySQL 的字段定义。我不记得这是针对表还是传递查询,但我记得有时 Access 似乎基于它下载的前几行中包含的数据来定义字段。

    您可以在连接字符串中指定一个可选参数,以帮助设置正确的字段定义。查看 www.connectionstrings.com 或 MySQL 的网站了解更多信息。

    实际上,我没有在 Access 中链接 MySQL 表,因为将两个表连接在一起的查询的性能非常糟糕。然而,我确实经常使用传递查询并取得了很大的成功。使用直通查询时,查询的工作由 MySQL 引擎完成,而不是访问 JET 引擎,这通常会带来更好的性能,因为只有最终数据会传到客户端。但是,当您使用传递查询时,您将失去在 Access 中进行查询编辑的 WYSIWYG 优势。

    我将使用的一个复杂解决方案涉及使用传递查询来自动创建一个我可以定期手动更新的表。我必须在设置过程中手动调整表定义(因为查询没有下拉字段定义),但是一旦我调整了表,我就可以使用 MySQL 数据以编程方式更新表。当我不得不在 Access 中做很多复杂的事情并提取大量数据时,我使用了这种技术。

    【讨论】:

    • 如果 ODBC 驱动程序为其提供了足够的元数据,Jet 将做出正确的决定并将大多数数据请求发送到服务器。我将此类问题归咎于 ODBC 驱动程序,因为通过 ODBC 使用 SQL Server 进行访问非常有效,几乎不会提取所有数据以用于可以在服务器上处理的查询。
    • 谢谢本。我想我会尝试直通查询。我必须在所有客户端机器上安装 ODBC 驱动程序吗?我可以在不必为每台机器创建 DSN 的情况下执行此操作吗?
    • 我能够通过运行此处找到的代码使链接表无 DSN:accessmvp.com/djsteele/DSNLessLinks.html 仍然没有弄清楚截断字段的问题
    • @PNG 每当我使用 ODBC 驱动程序时,我都必须在每台机器上安装它,这很痛苦。我总是以编程方式在代码中设置连接,但我仍然必须手动安装驱动程序。
    • @David 你说得很好。我从来没有对 MySQL 链接表有太多的运气。不过,我想知道,即使使用基于 ODBC 的 SQL Server,JET 引擎也能处理多少复杂性。如果您开始使用嵌套查询或调用其他查询的查询,JET 引擎是否足够聪明,不会拉下整个表来处理它?我想那总是我遇到麻烦的地方,但我记不清了。
    【解决方案3】:

    嗯,这很尴尬。我正在查看的表格有一列是较长列的截断版本,而我正在查看该列。

    【讨论】:

    • 糟糕!当这种事情发生时,我讨厌它! :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-15
    • 1970-01-01
    • 2018-01-30
    • 2013-02-21
    相关资源
    最近更新 更多