本文主要是介绍mysql外键创建不成功/失效如何处理,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
《mysql外键创建不成功/失效如何处理》文章介绍了在MySQL5.5.40版本中,创建带有外键约束的`stu`和`grade`表时遇到的问题,发现`grade`表的`id`字段没有随着`studen...
当前mysql版本:SELECT VERSION();
结果为:5.5.40。
在复习mysql外键约束时创建表格:stu与grade,目标:grade的id随着student的id级联更新,且限制删除。
创建student表格:
CREATE TABLE www.chinasem.cnstudent ( 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不支持外键,InnoDhttp://www.chinasem.cnB支持)使用了:MyISAM
使用语句为:
SjsHOW 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外键创建不成功/失效内容请搜索China编程(www.chinasem.cn)以前的文章或继续浏览下python面的相关文章希望大家以后多多支持编程China编程(wwwww.chinasem.cnw.chinasem.cn)!
这篇关于mysql外键创建不成功/失效如何处理的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!