通过 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
属性 设置为。考虑从视图中隐藏该列,这样您的用户就不会感到困惑。TIMESTAMP
NOW()
TIMESTAMP
在某些情况下,Access 可能会生成 MySQL 无法理解的 SQL 语句。您可以通过
"Query|SQLSpecific|Pass-Through"
从“访问”菜单中进行选择来解决此问题。在 Windows NT 上,Access 将
BLOB
列报告为OLE OBJECTS
. 如果您想改为使用MEMO
列,请将列更改BLOB
为TEXT
withALTER TABLE
。如果您在 Access 中有一个定义为 的列
BYTE
,Access 会尝试将其导出为TINYINT
而不是TINYINT UNSIGNED
。如果列中的值大于 127,这会给您带来问题。-
如果 Access 中有非常大(长)的表,打开它们可能需要很长时间。或者您可能会在虚拟内存不足的情况下运行并最终出现
ODBC Query Failed
错误并且无法打开表。要处理此问题,请选择以下选项:返回匹配行 (2)
允许大结果 (8)。
这些加起来的值为 10 (
OPTION=10
)。
在使用 Access、ODBC 和 Connector/ODBC 时可能有用的一些外部文章和提示:
-
优化 Access ODBC 应用程序