我正在使用PHP PDO将MS Access系统迁移到mySQL系统。在PHP停止读取Access表上的某些记录之前,一切正常。此表具有ID字段,该字段是Long Integer数据类型。我不知道为什么,但ID从0到16949开始然后跳到36573745并结束于36581986.PDO读不了这些更高的数字,我无法弄清楚原因。
无论如何要解决这个问题,我试图更新这些更高的数字以继续下一个ID的正常序列。但Access无法理解我的查询,我不知道如何让它运行。
这是查询
UPDATE Validador_Manut SET ID = (
SELECT (Max(ID) + 1) FROM Validador_Manut WHERE ID < 100000
) WHERE ID > 100000
它向我显示了此错误Uperation must use an updatable query
。
答案 0 :(得分:1)
我想到了两件事。
1.)保留关键字
如果您使用某些关键字作为表名或列名,您可能会得到神秘的异常,并不能真正告诉您实际原因。
您的专栏ID
看起来很可疑。
短暂的互联网搜索没有提供这个理论的证据,但我相信我会记得我在某个地方看到ID作为MS Access中的保留字。你可以尝试
[]
(不推荐) 2。)这篇文章看起来可能有所帮助:Solving the Operation Must Use An Updateable Query error
当Jet 4.0数据库(由“Access”mdb文件表示的实际数据库类型)部署在多用户环境中时, 每当打开数据库时都会创建.ldb文件。 .ldb文件 包含详细信息,其中包括谁已打开文件,主要包括 用于防止其他用户写入打开的记录。
在ASP.NET应用程序的上下文中,“用户”依赖于平台:对于XP Pro机器,用户是ASPNET 帐户。在Windows Server 2003,2008和Vista上,它是NETWORK 服务帐户。但是,如果启用了ASP.NET Impersonation, 默认用户帐户将是IUSR_machinename,或以其中任何一个为准 您已申请的帐户。如果您不确定您的ASP.NET帐号 应用程序正在运行,Environment.UserName将返回它。至 能够创建,写入和删除所需的.ldb文件 相关用户需要对.mdb文件夹的MODIFY权限 文件在。
要设置此权限,请右键单击App_Data文件夹(或您将mdb文件放入其中的任何其他文件夹)并选择 属性。查找“安全”选项卡。如果你看不到它,你需要 转到我的电脑,然后单击工具,然后选择文件夹选项.... 然后单击“视图”选项卡。滚动到底部并取消选中“使用简单 文件共享(推荐)“。返回”安全“选项卡,需要添加 相关帐户到“组或用户名”框。点击添加.... 然后单击高级,然后单击立即查找。适当的帐户应该是 上市。双击它以将其添加到“组或用户名”框,然后 检查权限中的“修改”选项。而已。你完成了。
注意:此修复程序还将解决“Microsoft Jet数据库引擎无法打开文件'(未知)”。它已经由 另一个用户,或者您需要获得查看其数据“错误。”的权限。
答案 1 :(得分:1)
如果您只想降低ID&gt; 16949之后的连续数字为100000 那么你为什么不试着这个呢?
UPDATE Validador_Manut SET [ID] = [ID]-36556795 WHERE ID > 100000
36573745 - 36556795 = 16950