Foreign key constraint is incorrectly formed

朋友,如果你也遇到了这个问题,建立外键的字段必须和引用表的字段一模一样的类型,请用 show create table table_name 查看是否一致。

今天在给一个表建外键的时候出现如题所示错误。

情况是这样的。我有一个bysj_student表,结构如下:

CREATE TABLE `bysj_student` (
	`id` INT(11) UNSIGNED NOT NULL AUTO_INCREMENT,
	`stuno` VARCHAR(20) NOT NULL,
	`name` VARCHAR(20) NOT NULL,
	`gender` VARCHAR(2) NOT NULL,
	`major_id` INT(11) UNSIGNED NOT NULL,
	`tel` VARCHAR(11) NOT NULL,
	`email` VARCHAR(50) NOT NULL,
	PRIMARY KEY (`id`)
)

还有另一个bysj_stu_sub表,结构如下:

CREATE TABLE `bysj_stu_sub` (
	`id` INT(11) NOT NULL AUTO_INCREMENT,
	`student_id` INT(11) NULL DEFAULT NULL,
	PRIMARY KEY (`id`),
	INDEX `student_id` (`student_id`),
	CONSTRAINT `bysj_stu_sub_ibfk_1` FOREIGN KEY (`student_id`) REFERENCES `bysj_student` (`id`)
)

bysj_stu_sub表里的student_id是bysj_student表的外键,但是在创建bysj_stu_sub表时,会提示错误:

SQL Error (1005): Can't create table 'test.bysj_stu_sub' (errno: 150)  Foreign key constraint is incorrectly formed

网上搜索之后才明白,建立外键的字段必须和引用表的字段一模一样的类型
于是将bysj_stu_sub表的student_id字段属性改为

`student_id` INT(11) UNSIGNED NULL DEFAULT NULL

再建表就没有问题了。

(原博客发布时间:2011-11-27 09:27:26)

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注