MySQL删除级联

MySQL删除级联,mysql,Mysql,不知是否有人能帮助我 我想使用“Delete Cascade”mySQL功能,这样当用户从“user details”表中删除时,它就会从数据库中的其他表中删除他们的记录 在阅读了有关Stackoverflow的一些帖子和我在互联网上进行的研究后,我将我的表更改为InnoDB,并开始更改现有的表 我已经能够将“使用外键删除级联”添加到我的第一个表中,但是当我尝试对任何其他表执行相同操作时,我收到以下错误: #1005 - Can't create table './db369054642/#sq

不知是否有人能帮助我

我想使用“Delete Cascade”mySQL功能,这样当用户从“user details”表中删除时,它就会从数据库中的其他表中删除他们的记录

在阅读了有关Stackoverflow的一些帖子和我在互联网上进行的研究后,我将我的表更改为InnoDB,并开始更改现有的表

我已经能够将“使用外键删除级联”添加到我的第一个表中,但是当我尝试对任何其他表执行相同操作时,我收到以下错误:

#1005 - Can't create table './db369054642/#sql-30d_bd1a57.frm' (errno: 121)
但我不确定为什么会收到这个错误,因为我更改的第一个表工作顺利

有人能告诉我,您只能将父表链接到一个子表吗

父表(用户详细信息)

子表(检测器)

删除级联SQL语句

ALTER TABLE detectors
   add CONSTRAINT fk_userdetails
     FOREIGN KEY (userid)
     REFERENCES userdetails(userid)
     ON DELETE CASCADE

您的表和引用的表在涉及的列上是否都有索引

发件人:

InnoDB需要外键和引用键的索引,以便 外键检查可以很快,不需要扫描表。在 引用表时,必须有外键所在的索引 列按相同顺序列为第一列。这样的 如果没有索引,则会在引用表上自动创建索引 存在(这与一些较旧的版本形成对比,在这些版本中,索引 必须显式创建或创建外键 约束将失败。)索引_名称(如果给定)按说明使用 以前


首先尝试创建必要的索引,或者向我们显示来自
show create TABLE yourTableName
的输出,这样我们就可以检查索引是否存在并且没有名称冲突。

您的表和引用的表在相关列上都有索引吗

发件人:

InnoDB需要外键和引用键的索引,以便 外键检查可以很快,不需要扫描表。在 引用表时,必须有外键所在的索引 列按相同顺序列为第一列。这样的 如果没有索引,则会在引用表上自动创建索引 存在(这与一些较旧的版本形成对比,在这些版本中,索引 必须显式创建或创建外键 约束将失败。)索引_名称(如果给定)按说明使用 以前


首先尝试创建必要的索引,或者向我们显示来自
show create TABLE yourTableName
的输出,这样我们就可以检查索引是否存在并且没有名称冲突。

看看perror实用程序(它包含在mysql分布中)。它为错误代码提供了更详细的解释,并从命令行运行。您案例中的错误号是121,因此您可以在命令行上运行此命令:

perror 121

看看perror实用程序(它包含在mysql发行版中)。它为错误代码提供了更详细的解释,并从命令行运行。您案例中的错误号是121,因此您可以在命令行上运行此命令:

perror 121

我想,通常的怀疑(如表空间已满/磁盘已满等)都被排除在外了?您可以发布用于创建外键的语句吗?可能只是,您已经有了一个与您试图创建的外键同名的外键?发布您的模式和查询请贴日志始终是错误消息的第一个重要资源。当我把你的错误插入搜索时,我得到了这个论坛讨论,还有其他几个点击-。请为您遇到问题的两个表(源表和目标表)发布
SHOW CREATE TABLE*tableName*
。另外,请发布您试图用来更改源表的SQL。您好,我已经添加了表结构和我试图实现的SQL语句。我想,通常的怀疑(如表空间已满/磁盘已满等)已被排除。您可以发布用于创建外键的语句吗?可能只是,您已经有了一个与您试图创建的外键同名的外键?发布您的模式和查询请贴日志始终是错误消息的第一个重要资源。当我把你的错误插入搜索时,我得到了这个论坛讨论,还有其他几个点击-。请为您遇到问题的两个表(源表和目标表)发布
SHOW CREATE TABLE*tableName*
。另外,请发布您试图用来更改源表的SQL。您好,我已经添加了我试图实现的表结构和SQL语句。
perror 121