mysql外键创建不成功/失效
2024-09-05 19:42:00
当前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与InnoDB的区别见:Mysql 中 MyISAM 和 InnoDB 的区别有哪些? - 知乎 (zhihu.com))使用了: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临时禁用触发器
- thinkphp的钩子的两种配置和两种调用方法
- Windows平台配置免安装的MySQL
- [ html canvas putImageData ] canvas绘图属性 putImageData 属性讲解
- Selenium2学习-025-WebUI自动化实战实例-023-页面快照截图应用之一 -- 常规截图(全页面)
- 黑马程序员_Java集合Map
- 使用mysql_query()方法操纵数据库以及综合实例
- 关于Visio Studio 2012使用Nuget获取Sqlite驱动包报错:“System.Data.SQLite.EF6”的架构版本与 NuGet 的版本 2.0.30625.9003 不兼容
- nyoj VF
- Java虚拟机内存溢出异常--《深入理解Java虚拟机》学习笔记及个人理解(三)
- js将时间戳转换为日期类型
- JAVA课程课后作业03之动手动脑
- Linux和windows 查看程序、进程的依赖库的方法
- C#窗体模拟键盘按键(组合键)产生事件 ---- 通过keybd_event()函数
- Spring配置,事务使用
- $.ajax dataType设置为json 回调函数不执行
- 【刷题】BZOJ 2820 YY的GCD
- JavaWeb学习总结(四):Servlet开发(二)
- NO--10今天带大家回忆回忆“闭包”吧!
- Js常用插件介绍