关于MySQL ERROR 1005 (HY000): Can‘t create table ‘数据库名.#sql-随机数字‘ (errno: 150)的解决

当,对数据库的外键进行了成功删除之后,
在添加新的外键约束的时候,提示:
ERROR 1005 (HY000): Can’t create table ‘数据库名.#sql-随机数字’ (errno: 150)
这很有可能是你,在命令中指定了两个表都没有/只有一个表有的字段来尝试,用酱婶的字段添加外键约束(列),

举例如下,
我有2个表,student 和 score ,我要使用这2个表都有的 字段 sid 来 建立外键约束,这是没有问题的,如下:
mysql> describe student;
mysql> describe score;
在这里插入图片描述

接下来,要建立外键约束的时候,使用到 两个表的 sid 字段(列)

在 score 表中 建立了一个关于 student 表的外键,
mysql> alter table score add constraint score_fk foreign key (sid) references student(sid);
在这里插入图片描述
到这里,创建外键都没有出错,

接下来,为了做实验,先删除这个外键,再重新创建外键,看看会不会出错,
现在,将 score 表的这个外键删除,
mysql> alter table score drop foreign key score_fk;
在这里插入图片描述
到这里,删除外键也没有出错,

然后,尝试再次给 score 表添加外键约束

却出现了错误

在这里插入图片描述

报错了!来仔细看一下添加外键约束的语句,发现 错误 发生在 命令末尾,
在这里插入图片描述

是指定的列名(字段名)有问题, 应该是 sid不是 id
修正语句,重新执行,
mysql> alter table score add constraint score_fk1 foreign key(sid) references student(sid);

在这里插入图片描述
没有问题,语句成功执行,
所以,当遇到了一些奇怪的错误提示,又不知道从何下手解决问题的时候,一般的办法是,逐字检查自己写的语句有没有问题,比如标点符号是不是英文的,比如关键字是不是多个字母、少个字母、错了字母、字母顺序错了等等,

接下来再介绍一个非常给力的查看表创建信息的语句,如下:
mysql> show create table score;
在这里插入图片描述
在这里就能看到建表的详细信息,包括刚才建立的外键约束,非常有用。

January the 17th 2022 Monday

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值