数据库存储时表之间建立外键时报错1215的一种可能

今天在用mysql时,导入了一份别人的sql脚本,其中在建表的时候出现了问题,数据库用的是Mysql5.7.26

  三个表,A(内有两个字段用来设置外键,B1_id,B2_id),B1(主键B1_id),B2(主键B2_id)

  表B1创建时,规定了数据库存储引擎为ENGINE=InnoDB,A和B2没有规定,为默认数据库存储引擎。

  这时候问题出现了,我在A表创建外键B1_id能够顺利执行,而在创建外键B2_id时会报错。  

 

                    

 

在查找尝试比对过后,发现跟数据库存储引擎有关。

我的B2表用 SHOW CREATE TABLE B2 查看默认引擎后发现

表B2的是 ENGINE=MyISAM 

1.engine=innodb

  • 提供外键约束的数据存储引擎
  • 提供事务处理
  • 支持commit、rollback等
  • 支持行锁
  • 增加并发读的用户数量
  • CPU利用率高,处理大容量数据性能好
  • 缓冲池,能缓冲数据和索引
  • 把数据和索引放在表空间

2.engine=myisam

  • 表单独存放在文件中
  • 读取操作快
  • 不支持事务操作,不容错

摘自:

MySQL学习笔记:Engine存储引擎

 https://www.cnblogs.com/hider/p/9353202.html

 

恩典 2021年11月14日 20:54:38

posted on 2021-11-14 20:56  kilabiubiu  阅读(129)  评论(0)    收藏  举报