Mysql级联删除不起作用

标签 mysql

在 mysql 中,我有两个表 playerswalls

我用它来创建墙表:

CREATE TABLE walls (id int AUTO_INCREMENT, player_id int, x int, y int, PRIMARY KEY(id), FOREIGN KEY (player_id) REFERENCES players(id) ON DELETE CASCADE);

alter table walls add unique index(x, y);

player_id 列是 players 表的 id 列的外键。 我想要这样,如果从玩家表中删除了任何行,那么 walls 表中具有外键到玩家表已删除行的任何行也应该使用级联删除自动从 walls 表中删除。但是当我这样做时,walls 表中的行不会被删除。

有人知道这里出了什么问题吗?

谢谢

最佳答案

确认您的表实际上使用了支持外键的引擎,例如创新数据库。较旧的 MySQL 将默认创建 MyISAM 表,它理解外键定义,但完全忽略它们。

简单测试:show create table yourtable;。如果 engine= 行表明它是一个不支持 FK 的引擎,那就是你的问题。

关于Mysql级联删除不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23371159/

相关文章:

mysql - 在 mySQL 中存储一个大数组

mysql - 通过附加数百行来更新表

php - SQL Comment表插入语句

c# - 使用mysql插入数据时出现语法错误

MySQL 集群错误 1296 (HY000) : Got error 157 'Unknown error code' from NDBCLUSTER

mysql - 在 MySQL 中排序 PayPal 日期

mysql - 获取具有隐私设置的 mysql 行

php - 将从 MySQL 检索的日期转换为请求的格式 (mm/dd/yy)

php - 如何在 CakePHP 中插入多个表单数据作为数据库中的新行

mysql - 计算MySQL坐标并更新行