errno: 150 “Foreign key constraint is incorrectly formed”

编程入门 行业动态 更新时间:2024-10-25 06:23:55

errno: 150 “<a href=https://www.elefans.com/category/jswz/34/1657343.html style=Foreign key constraint is incorrectly formed”"/>

errno: 150 “Foreign key constraint is incorrectly formed”

原文链接:这里

0.问题及办法
数据库使用外键时,报这个错。

1005 - Can’t create table myapp.#sql-1bb4_1d (errno: 150 “Foreign key constraint is incorrectly formed”)
看样子是主键的类型不一致导致的。

我的sql数据如下

– 创建学生表
DROP TABLE IF EXISTS students;
CREATE TABLE students (
id int(10) unsigned NOT NULL AUTO_INCREMENT,
stu_name varchar(20) NOT NULL COMMENT ‘学生姓名’,
stu_sex varchar(10) NOT NULL COMMENT ‘学生性别’,
class_id int(10) NOT NULL COMMENT ‘年级’,
age int(10) NOT NULL DEFAULT 18 COMMENT ‘年龄’,
create_time datetime NULL DEFAULT CURRENT_TIMESTAMP,
update_time datetime NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (id)
) ENGINE=InnoDB AUTO_INCREMENT=1000 DEFAULT CHARSET=utf8;
– 创建年级表
DROP TABLE IF EXISTS grade;
CREATE TABLE grade (
grade_id int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT ‘年级id’,
grade_name varchar(20) NOT NULL COMMENT ‘年级的名字’,
teacher_name varchar(10) NOT NULL COMMENT ‘班主任’,
teacher_phone int(11) NOT NULL COMMENT ‘班主任电话’,
create_time datetime NULL DEFAULT CURRENT_TIMESTAMP,
update_time datetime NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (grade_id)
)ENGINE=InnoDB AUTO_INCREMENT=1000 DEFAULT CHARSET=utf8;
– 创建外键(适用于一开始创建表的时候没有外键的情况)
ALTER TABLE students
ADD CONSTRAINT class_id FOREIGN KEY(class_id) REFERENCES grade (grade_id)
仔细检查,确实是,grade表的 grade_id 字段中有个 unsigned ,而students表中class_id 没有unsigned。所以会报错。解决办法也很简单,把两者统一就行。

另外,出了这个问题,可以从下面这些方面考虑:

1、外键的引用类型不一样,如主键是int外键是char

2、找不到主表中引用的列

3、主键和外键的字符编码不一致,也可能存储引擎不一样

更多推荐

errno: 150 “Foreign key constraint is incorrectly formed”

本文发布于:2024-03-23 22:01:35,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1743336.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:Foreign   errno   key   formed   incorrectly

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!