我在MariaDB 5.5.36中遇到了一个问题,其中外键约束没有被强制执行或与mysqldump导出。我的进一步调查表明,这些键没有显示在"SHOW CREATE TABLE"中,甚至没有强制执行。我确信我的DDL有问题,但我不知道是怎么回事。
我使用常规mysql命令行测试了以下内容:
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或"show create table child"没有显示外键"ON DELETE CASCADE"部分。
对此有什么想法吗?
Michael Berkowski指出问题出在MyISAM存储引擎上。