【发布时间】:2013-01-19 12:38:59
【问题描述】:
我在 Windows 7(64 位)下使用 MS Access 2003,在 MySQL 服务器(5.0.51a-24+lenny5)上使用外部链接表,通过 MySQL ODBC 连接器连接(使用 5.1.10,因为最新的 5.1.11是越野车)。当我在 MS Access 中打开此表并尝试从中删除一些记录时,我收到以下错误:
Microsoft Jet 引擎停止了该进程,因为您和其他人 用户正试图同时更改相同的数据。
当我尝试编辑表格中的一些记录时,我收到以下错误:
自您开始编辑后,此记录已被其他用户更改 它。如果您保存记录,您将覆盖其他的更改 用户制作。
将更改复制到剪贴板可让您查看值 其他用户输入,然后将您的更改粘贴回来,如果您 决定做出改变。
但是,当我通过 MS Access 中的删除或更新查询执行此操作时,它工作正常!我无法直接从表中删除记录。
我发现(请参阅下面的详细分析),当double 字段的值包含很多十进制数字时,就会出现问题。见:
CREATE TABLE `_try4` (
`a` int(11) NOT NULL default '0',
`b` double default NULL,
PRIMARY KEY (`a`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_czech_ci;
insert into _try4 values (1, NULL),(2, 4.532423),(3,10),(4,0),
(5,6.34324),(6, 8.2342398423094823);
只有当您尝试删除/编辑最后一条记录(a = 6)时才会出现问题,否则就可以了!
记录了该问题:
http://support.microsoft.com/kb/280730 ,提出这 3 个解决方法:
- 将时间戳列添加到 SQL 表。 (然后 JET 将仅使用此字段来查看记录是否已更新。)
- 将 SQL Server 中的数据类型修改为非浮点数据类型(例如,十进制)。
- 运行更新查询以更新记录。您必须这样做,而不是依赖记录集更新。
但是,这 3 种解决方法并不令人满意。只有第一个可能是,但这种解决方法没有奏效 - 正如预期的那样。它可能只适用于 MS SQL Server。
对于这个问题还有其他解决方案/变通方法吗?
其他详情:
- MySQL 服务器仅供我使用,其他人无法访问它。
- 新记录的插入工作正常。
- 为该表定义了主键。
- 重新启动 MS Access 没有帮助。
- 删除指向 ODBC 表的链接并重新链接也无济于事。
- 从全新的 Access 数据库链接表没有帮助。
- 将 MySQL 数据库引擎从 MyISAM 更改为 InnoDB 也没有帮助。
- 权限没有问题,这个user@host的所有权限都有。
- 我可以正常从服务器的 MySQL 控制台中删除记录,没有问题。
- 尝试设置 MySQL 连接器 ODBC 选项没有帮助:允许大结果、启用自动重新连接、允许多个语句、启用动态游标、强制使用只进游标、不缓存只进游标的结果。
- 我在 MySQL ODBC 连接器中打开了调试,它创建了
myodbc.sql日志,但在编辑/删除时没有包含任何相应的查询(不知道为什么)。
【问题讨论】:
-
当前状态:未回答的问题;我使用了上面对我来说最简单的解决方法:将一些
double字段(具有很多小数位的字段)转换为decimal。
标签: mysql ms-access odbc mysql-odbc-connector