我在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 / MS中的查询时,它工作正常!我只是无法直接从表中删除记录。
我发现(参见下面的详细分析),当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。
其他详细信息:
myodbc.sql
日志,但在编辑/删除时却没有包含任何相应的查询(不知道原因)。答案 0 :(得分:1)
关于链接表结构的更多细节会有所帮助,但我会猜测。
在MS Access 2003和2010中,当我在SQL Server链接表中包含可以为空的布尔字段时,我遇到了类似的问题。似乎JET数据库存在可空的nit字段问题。有关详细信息,请查看此答案:https://stackoverflow.com/a/4765810/1428147
我通过使布尔字段不可为空并设置默认值来解决我的问题。如果您的问题与我的问题相同,但使用MySQL,请尝试执行相同的操作。
答案 1 :(得分:1)
我在这里解决了同样的问题。解决方案是从表中的十进制字段中删除默认值。我能够保留十进制数据类型,但是只删除了我以前定义的默认值0.0000,现在我将其设置为null并修复了错误。
答案 2 :(得分:0)
我的解决方法是将表格数据复制到excel中,然后使用phpmyadmin清除表格,然后在excel中进行编辑,并将“新”数据(即编辑后的所有数据)复制回访问权限。 / p>