hibernate 创建外键失败
项目用的ssh框架,启动时会报创建外键失败的错误:
ERROR: HHH000389: Unsuccessful: alter table Course_CourseType add index FK_bq7f9dk9hyurjyi8qiypjjk0 (course_id), add constraint FK_bq7f9dk9hyurjyi8qiypjjk0 foreign key (course_id) references Course (id)
ERROR: Cannot add foreign key constraint
在 MySQL workbench 中执行,也会报错:
14:22:03 alter table Course_CourseType add index FK_bq7f9dk9hyurjyi8qiypjjk0 (course_id), add constraint FK_bq7f9dk9hyurjyi8qiypjjk0 foreign key (course_id) references Course (id)
Error Code: 1215. Cannot add foreign key constraint 0.515 sec
解决方法:
1) 确保 添加的外键的类型和被引用的那个值的类型和长度是一样的
比如:在我的工程里就是保证 course_courseType表中的字段course_id 和 course表中的主键id 的类型和长度是一致的。
course.id varchar(64)
course_courseType.course_id (64)
2) 确保两个表中的Engine是一致的
3) 确保添加外键的表(course_courseType) 中与course 表中的要关联的字段的charset是一致的,修改charset的话,可以按下面
步骤操作:
打开之后是如下界面:
上面三个红圈应该也得跟要关联表的数据表一致,我改完之后,还是会失败,所以我就继续修改了columns里面对应外键
的字段的charset/Collation的相关信息,也是跟关联表中要关联字段的信息一致。