通过 Connector/ODBC 改善 Microsoft Access 和 MySQL 之间的集成
对于所有版本的 Access,请启用 Connector/ODBC
返回匹配行
选项。对于 Access 2.0,还要启用模拟 ODBC 1.0
选项。在要更新的所有表中包含
TIMESTAMP
列。为了获得最大程度的可移植性,请勿在列声明中使用长度规范(在 4.1 之前的 MySQL 版本中不支持)。在要与 Access 一起使用的每个 MySQL 表中包含 主键。否则,新行或更新的行可能会显示为
#DELETED#
。仅使用
DOUBLE
浮点字段。Access 在与单精度浮点数进行比较时会失败。症状通常是新行或更新的行可能会显示为#DELETED#
,或者您找不到或更新行。-
如果您使用 Connector/ODBC 链接到具有
BIGINT
列的表,则结果将显示为#DELETED#
。解决方法是再添加一个虚拟列,其数据类型为
TIMESTAMP
。在 ODBC DSN 管理器的连接对话框中选择
将 BIGINT 列更改为 INT
选项。从 Access 中删除表链接并重新创建它。
旧记录可能仍显示为
#DELETED#
,但新添加/更新的记录将正确显示。 -
如果在添加
TIMESTAMP
列后仍收到错误其他用户已更改您的数据
,则以下技巧可能会有所帮助不要使用
表
数据表视图。而是创建一个包含所需字段的表单,并使用该表单
数据表视图。将TIMESTAMP
列的DefaultValue
属性设置为NOW()
。考虑隐藏TIMESTAMP
列,以免用户感到困惑。 在某些情况下,Access 可能会生成 MySQL 无法理解的 SQL 语句。您可以通过从 Access 菜单中选择
“查询|SQLSpecific|传递”
来解决此问题。在 Windows NT 上,Access 将
BLOB
列报告为OLE 对象
。如果您想改为使用MEMO
列,请使用ALTER TABLE
将BLOB
列更改为TEXT
。Access 无法始终正确处理 MySQL
DATE
列。如果您在使用这些列时遇到问题,请将列更改为DATETIME
。如果 Access 中的列定义为
BYTE
,则 Access 会尝试将其导出为TINYINT
,而不是TINYINT UNSIGNED
。如果列中的值大于 127,则会出现问题。-
如果 Access 中的表非常大(长),则打开它们可能需要很长时间。或者,您的虚拟内存可能会不足,并最终收到
ODBC 查询失败
错误,并且无法打开该表。要解决此问题,请选择以下选项返回匹配行 (2)
允许大结果 (8)。
这些加起来的值为 10 (
OPTION=10
)。
使用 Access、ODBC 和 Connector/ODBC 时,以下是一些可能有用的外部文章和提示
-
优化 Access ODBC 应用程序