管理实验室网站的原因,学了mysql一招。
1. mysql表类型分不同的引擎,包括MyISAM和InnoDB,因为商业的问题后面可能还有其他,没关心。
MyISAM对高级的事物操作支持非常差,连最基本的外键都不支持。所以,之前在表上加外键约束,不起效,后来定位是MyISAM的问题。
Navicat上点中一个表,看他的属性,就能看到用得时是什么引擎。
2. 我的mysql版本是5.6,支持InnoDB,在建表的时候,create table *()后加上一句,ENGINE=InnoDB就可以保证表的模型是InnoDB。
3. 加外键时,出了问题,1452,原因是表中的受外键约束列中出现的值,一定要再外键表中出现过,且在外键表中作为主键。
4. 如果原始数据库中的表是MyISAM,需要把表导出成sql脚本,然后删掉表,重新建一个,再导数据,或是数据库导出成sql,把里面MyISAM全部替换成InnDB,然后使用该脚本重新建库。