zoukankan      html  css  js  c++  java
  • 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


       碰到的错误信息如下:
       

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

    3. 问题分析

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

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

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

    4.  解决的办法

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

        

    5. 总结

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


     

  • 相关阅读:
    夜神模拟器+seleinm抓取手机app(参考资料集合)
    关于pycharm导入其他项目时出现找不到python无法运行的问题
    关于动态规划的一点研究
    numpy里的randn
    关于pandas里面的合并
    笛卡尔乘积的解释
    Python链表与反链表
    年度总结一下
    Docker的使用初探(一):常用指令说明
    Java开发学习心得(三):项目结构
  • 原文地址:https://www.cnblogs.com/lxwphp/p/15453130.html
Copyright © 2011-2022 走看看