我遇到了MariaDB 5.5.36的问题,其中没有使用mysqldump强制或导出外键约束。我的进一步调查表明,这些键没有显示在" SHOW CREATE TABLE"甚至强制执行。我确信我的DDL有问题,但无法弄清楚。
我使用常规的mysql CLI测试了以下内容。
DDL:
create table parent(id bigint auto_increment not null,
name varchar(32),
primary key (id));
create table child(id bigint auto_increment not null,
parent_id bigint, name varchar(32),
primary key (id),
foreign key fk_parent_id (parent_id) references parent(id) ON DELETE CASCADE);
DML:
insert into parent(name) values('P1');
insert into child(parent_id, name) values(1, 'C1');
DELETE from parent;
DROP table parent;
我预计DELETE或DROP语句会导致错误,但它并没有,并且子表仍然包含一行。而且,在这个测试中没有任何一点mysqldump或者#34; show create table child"显示外键" ON DELETE CASCADE"一部分。
对此有何想法?
答案 0 :(得分:0)
Michael Berkowski指出问题出在MyISAM存储引擎上。将其更改为InnoDB可以解决问题。