MySQL中创建外键的错误:1215 Cannot add the foreign key constraint[通俗易懂]

MySQL中创建外键的错误:1215 Cannot add the foreign key constraint

大家好,又见面了,我是全栈君。

引言: MySQL中经常会需要创建父子表之间的约束,这个约束是需要建立在主外键基础之上的,这里解决了一个在创建主外键约束过程中碰到的一个问题。

1. 问题的提出

    创建两个表: 

     product:  商品表
     sealer:  供货商表
 相应的SQL如下:

   product:

DROP TABLE IF EXISTS `product`;
CREATE TABLE `product` (
  `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
  `name` varchar(20) NOT NULL COMMENT 'product name',
  `price` float(10,3) NOT NULL,
  `description` varchar(20) DEFAULT NULL,
  `count` int(11) NOT NULL DEFAULT '0',
  `sid` int(11) NOT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `id_index` (`id`) USING HASH,
  UNIQUE KEY `sid_index` (`sid`) USING HASH
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

   sealer:

DROP TABLE IF EXISTS `sealer`;
CREATE TABLE `sealer` (
  `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
  `name` varchar(30) NOT NULL,
  `city` varchar(255) DEFAULT NULL,
  `created_time` datetime DEFAULT NULL,
  `updated_time` datetime DEFAULT NULL,
  `level` int(11) NOT NULL DEFAULT '0',
  `description` varchar(40) DEFAULT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `id_index_1` (`id`) USING HASH
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8;

 接下来我们需要关联product.sid 至 sealer.id,进行父子表的主外键关联。
2. 碰到错误

    在创建外键之时,使用的SQL和碰到错误信息如下:

alter table `product' add CONSTRAINT `sid_ref` FOREIGN KEY (`sid`) REFERENCES `sealer` (`id`) ON DELETE NO ACTION ON UPDATE NO ACTION

   碰到的错误信息如下:
   MySQL中创建外键的错误:1215 Cannot add the foreign key constraint[通俗易懂]

  无法正确的插入外键约束。

3. 问题分析

    主外键更多的是某表的主键与子表的某个列进行关联,要求是具备相同的数据类型和属性,问题会不会出现在这里?

     要求: 具备相同的数据类型和约束

    发现:   unsigned,数字的字符长度不一致。

4.  解决的办法

     修改product.sid中的数据类型,添加unsigned和字段的长度,将其设置为相同即可。

    MySQL中创建外键的错误:1215 Cannot add the foreign key constraint[通俗易懂]

5. 总结

    之所以出现1215的问题,是由于主外键之间的数据类型不一致造成的,以后类似问题,皆可按此处理。

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/112089.html原文链接:https://javaforall.net

赞 (0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • HttpClient4.X 升级 入门 + http连接池使用

    HttpClient4.X 升级 入门 + http连接池使用转载请注明出处,谢谢~http://blog.csdn.net/shootyou/archive/2011/05/12/6415248.aspx 在一次服务器异常的排查过程当中(服务器异常排查的过程我会另起文章),我们决定使用HttpClient4.X替代HttpClient3.X或者HttpConnection。为什么使用HttpClient4?主要是HttpConnection

    2022年7月22日
  • 〖教程〗Ladon 0day通用执行命令DLL生成器-MS17010演示[通俗易懂]

    〖教程〗Ladon 0day通用执行命令DLL生成器-MS17010演示[通俗易懂]Ladon8.9更新功能20210920[+]CmdDllWindows0day漏洞通用DLL注入生成器,生成的DLL仅5KB,非常适合0day加载2021.9.15[u]webscanCS保留[u]CmdDll去除黑框2021.9.14[+]CVE-2021-40444MicrosoftMSHTML远程代码执行漏洞,Office文档利用模块影响版本:包括Windows7/8/8.1/10,WindowsServer2008/2008R2/2012/2012R2/2016

    2022年5月20日
  • 计算机设备问题代码43,设备管理器错误代码(代码43)的六种解决方法

    内容一、“由于此设备存在问题,Windows已将其停止(代码43)”),这是问题的原因原因分析:代码43错误是多个设备管理器错误代码之一。当设备管理器停止硬件设备时,会生成此错误,这可能是由硬件设备或设备驱动程序故障引起的。设备管理器错误代码(代码43)的详细信息可以在设备属性的“设备状态”区域中找到。引起问题的设备将在设备中用感叹号标记)设备管理器,如下图所示:有关如何解决此问题的信息,…

    2022年4月4日
  • potplayer设置快捷键[通俗易懂]

    potplayer设置快捷键[通俗易懂]引言potplayer是一款非常好用的播放器,功能齐全,且无广告,但是我在使用中按错快捷键ctrl+spotplayer就开启了一个叫采集器的东西,非常难受.话说和ctrl+s这么高频使用的快捷键冲突也太令人恼火了吧解决方法在播放区域右键鼠标打开菜单,找到选项按钮按钮????找到快捷键选项卡????添加快捷键,输入ctrl+s,然后选择未定义指令,确定,大功告成!…

    2022年5月22日
  • IDEA 快捷键大全

    IDEA 快捷键大全Ctrl+Shift+Enter,语句完成“!”,否定完成,输入表达式时按“!”键Ctrl+E,最近的文件Ctrl+Shift+E,最近更改的文件Shift+Click,可以关闭文件Ctrl+[OR],可以跑到大括号的开头与结尾Ctrl+F12,可以显示当前文件的结构Ctrl+F7,可以查询当前元素在当前文件中的引用,然后按F3可以选择Ctrl+N,可以快速打开类C…

    2022年5月14日
  • wenstorm 激活码(最新序列号破解)

    wenstorm 激活码(最新序列号破解),https://javaforall.net/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

    2022年3月17日

发表回复

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

关注全栈程序员社区公众号