mysql外键创建不成功/失效如何处理
当前mysql版本:SELECT VERSION();结果为:5.5.40。
在复习mysql外键约束时创建表格:stu与grade,目标:grade的id随着student的id级联更新,且限制删除。
创建student表格:
CREATE TABLE student (
id INT ( 8 ),
NAME VARCHAR ( 20 ),
department VARCHAR ( 20 ),
INDEX ( id )) ENGINE = INNODB;创建grade表格:
CREATE TABLE grade (
id INT PRIMARY KEY auto_increment,
score INT NOT NULL,
stu_id INT,
index( id ),
CONSTRAINT yueshu1 FOREIGN KEY ( id ) REFERENCES student ( id ) ON DELETE RESTRICT ON UPDATE CASCADE
)ENGINE = INNODB ;原以为已经成功,且发现外键仿佛没有添加成功,即grade表的id字段不会随着student表的id字段更新,且没有删除的限制。
经过排查发现是表的引擎不对(MyISAM不支持外键,InnoDB支持)使用了:MyISAM
使用语句为:
SHOW TABLE STATUS FROM fuxi WHERE NAME LIKE 'grade';
因此将创建grade表的语句指定engine=INNODB即可:
CREATE TABLE grade (
id INT PRIMARY KEY auto_increment,
score INT NOT NULL,
stu_id INT,
index( id ),
CONSTRAINT yueshu1 FOREIGN KEY ( id ) REFERENCES student ( id ) ON DELETE RESTRICT ON UPDATE CASCADE
)ENGINE = INNODB ;到此这篇关于mysql外键创建不成功/失效如何处理的文章就介绍到这了,更多相关mysql外键创建不成功/失效内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
mysql中count(), group by, order by使用详解
mysql中order by 排序查询、asc升序、desc降序,group by 分组查询、having 只能用于group by子句、作用于组内,having条件子句可以直接跟函数表达式。使用group by 子句的查询语句需要使用聚合函数。2017-05-05
mysql中max_allowed_packet参数的配置方法(避免大数据写入或者更新失败)
这篇文章主要介绍了mysql中max_allowed_packet参数的配置方法,以及查看max_allowed_packet参数当前值的方法,需要的朋友可以参考下2014-05-05


最新评论