【朋友,如果你也遇到了这个问题,建立外键的字段必须和引用表的字段一模一样的类型,请用 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)