8.2.1.1 微软访问

通过 Connector/ODBC 改进 Microsoft Access 和 MySQL 之间的集成:

  • 对于所有版本的 Access,启用连接器/ODBC Return matching rows选项。对于 Access 2.0,还启用该Simulate ODBC 1.0选项。

  • TIMESTAMP 在您希望能够更新的所有表中 包含一列。为了获得最大的可移植性,不要在列声明中使用长度规范(在 4.1 之前的 MySQL 版本中不支持)。

  • 在要与 Access 一起使用的每个 MySQL 表中 包含一个主键。否则,新的或更新的行可能显示为 #DELETED#

  • 仅使用DOUBLE浮动字段。与单精度浮点数比较时访问失败。症状通常是新的或更新的行可能显示为, #DELETED#或者您无法找到或更新行。

  • 如果您使用连接器/ODBC 链接到具有 BIGINT列的表,则结果显示为#DELETED#. 解决方案的工作是:

    • 有一个虚拟列 TIMESTAMP作为数据类型。

    • 在 ODBC DSN 管理器的连接对话框中选择该Change BIGINT columns to INT选项。

    • 从 Access 中删除表链接并重新创建它。

    旧记录可能仍显示为 #DELETED#,但新添加/更新的记录会正确显示。

  • 如果Another user has changed your data在添加 TIMESTAMP列后仍然出现错误,以下技巧可能会对您有所帮助:

    不要使用table数据表视图。相反,创建一个包含所需字段的表单,然后使用该form数据表视图。将 列 的DefaultValue属性 设置为。考虑从视图中隐藏该列,这样您的用户就不会感到困惑。 TIMESTAMPNOW()TIMESTAMP

  • 在某些情况下,Access 可能会生成 MySQL 无法理解的 SQL 语句。您可以通过 "Query|SQLSpecific|Pass-Through"从“访问”菜单中进行选择来解决此问题。

  • 在 Windows NT 上,Access 将 BLOB列报告为 OLE OBJECTS. 如果您想改为使用 MEMO列,请将列更改 BLOBTEXTwith ALTER TABLE

  • Access 无法始终 DATE正确处理 MySQL 列。如果您对这些有疑问,请将列更改为 DATETIME

  • 如果您在 Access 中有一个定义为 的列 BYTE,Access 会尝试将其导出为 TINYINT而不是 TINYINT UNSIGNED。如果列中的值大于 127,这会给您带来问题。

  • 如果 Access 中有非常大(长)的表,打开它们可能需要很长时间。或者您可能会在虚拟内存不足的情况下运行并最终出现ODBC Query Failed错误并且无法打开表。要处理此问题,请选择以下选项:

    • 返回匹配行 (2)

    • 允许大结果 (8)。

    这些加起来的值为 10 ( OPTION=10)。

在使用 Access、ODBC 和 Connector/ODBC 时可能有用的一些外部文章和提示: