ms-access正在连接到本地mysql数据库
下面的代码返回一个错误:
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 FunctionstrSql = "DELETE FROM tblUsersSubjects WHERE user_id=2007;“-我运行以下语句它工作得很好,但是access给我这个错误: 3086:无法从指定表中删除
此错误的原因是什么?
表结构为:
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来执行所需的删除操作
发布于 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中是只读的。
发布于 2009-08-31 00:04:44
表是在Access中还是在MySql中?如果是在MySql中,很可能您没有适当的权限编辑表数据。检查指向MySql表的连接字符串,并确保您所连接的用户对该表具有delete权限。
还有--这个表和其他表有什么外键关系吗?您可能正在尝试删除一条记录,该记录将导致对其他表的主键的冲突。
发布于 2009-08-31 00:14:40
也许这是一个区分大小写的问题?
您键入了:"tbluserssubjects“作为表结构,但在查询中键入了"tblUsersSubjects”(大写U和S)
https://stackoverflow.com/questions/1355234
复制相似问题