使用Navicat V5.5创建数据库,外键出现错误ERROR 1005: Can’t create table (errno: 121)

网上搜索结果告诉我有以下三种原因:

1、表名重复

2、以该名字命名的表之前创建过后来删除了,但是对应的.frm文件还留在磁盘上

3、主键名字在全数据库范围内不是唯一的

今天遇到的应该是第三种情况-----主键名字在全数据库范围内不是唯一的

在设置外键的时候,外键名之前在另外一张表里面已经使用过,这就造成了'121'这个错误。将外键名进行更改后,建表成功。

结合我自己的实际情况 ,推导自己的错误原因大概是约束名  与其他表约束名 重复了。

语法:创建表时 指定外键约束 :

constraint   约束名称  foreign  key(外键列名)   references  关联表 (关联表的主键);

扫描二维码关注公众号,回复: 2288791 查看本文章

学生成绩表(t_score):
错误多次的建表如下:
 create table t_score(
    -> sid char(5),
    -> cid char(2),
    -> score int comment'成绩',
    -> constraint fk_1 foreign key(sid) references t_student(sid),
    -> constraint fk_2 foreign key(cid) references t_course(cid)
    -> );
1005 - Can't create table 'homework.t_score' (errno: 121)


改正过后的建表:
mysql> create table t_score(
    -> sid char(5),
    -> constraint fk_3 foreign key (sid) references t_student(sid),
    -> cid char(2),
    -> constraint fk_4 foreign key(cid) references t_course(cid),
    -> score int
    -> );
Query OK, 0 rows affected

总结 错误原因:约束名与已有表中的外键名字重复,故不能创建。1005 ******* 121

错误

猜你喜欢

转载自blog.csdn.net/abcd2333/article/details/81120777