首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ms-access无法删除

ms-access无法删除
EN

Stack Overflow用户
提问于 2009-08-30 23:46:13
回答 3查看 2K关注 0票数 1

ms-access正在连接到本地mysql数据库

下面的代码返回一个错误:

代码语言:javascript
复制
Public Function run_sql(strSql As String)
On Error GoTo lblError
CurrentDb.Execute strSql, dbFailOnError
lblExit:
    Exit Function
lblError:
    MsgBox Err.Number & ": " & Err.Description
    Resume lblExit
End Function

strSql = "DELETE FROM tblUsersSubjects WHERE user_id=2007;“-我运行以下语句它工作得很好,但是access给我这个错误: 3086:无法从指定表中删除

此错误的原因是什么?

表结构为:

代码语言:javascript
复制
CREATE TABLE `tbluserssubjects` (
  `user_id` int(11) NOT NULL,
  `subject_id` int(11) NOT NULL,
  `other` varchar(50) default NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1;

请注意,我可以使用shell而不是access来执行所需的删除操作

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2009-08-31 00:53:08

在Access中,是否可以在数据表视图中打开链接表tblUsersSubjects,并在数据表视图中进行编辑或删除?如果不是,Access可能会将与MySql表的连接视为只读。尝试删除链接(在Access中,而不是MySql中的实际表)。然后在Access中重新链接表,并确保告诉Access使用哪个字段(或字段组合)作为主键。如果Access不知道链接表的主键,则该链接将是只读的。

在与Alex进行离线讨论后,我想补充一下这个答案:

Access最初无法识别要用作主键的内容,因此您的链接表在Access端是只读的。我猜这是因为CREATE TABLE语句没有包含主键约束。但我实际上并不知道Access在链接到外部表时如何自动识别主键的细节。也许,在没有显式定义的主键的情况下,它可能会查找具有非空值和唯一约束的字段。但是CREATE TABLE语句也没有在MySql表上包含任何唯一约束。

因此,当Access无法自动猜测外部表的主键时,您必须告诉它哪些字段(或哪些字段)用作主键... 除非您希望链接表在Access中是只读的。

票数 2
EN

Stack Overflow用户

发布于 2009-08-31 00:04:44

表是在Access中还是在MySql中?如果是在MySql中,很可能您没有适当的权限编辑表数据。检查指向MySql表的连接字符串,并确保您所连接的用户对该表具有delete权限。

还有--这个表和其他表有什么外键关系吗?您可能正在尝试删除一条记录,该记录将导致对其他表的主键的冲突。

票数 1
EN

Stack Overflow用户

发布于 2009-08-31 00:14:40

也许这是一个区分大小写的问题?

您键入了:"tbluserssubjects“作为表结构,但在查询中键入了"tblUsersSubjects”(大写U和S)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1355234

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档