由于外键的存在引发的一个mysql问题 Cannot change column 'id': used in a foreign key constraint
Duplicate entry '' for key 'PRIMARY'
一查,发现表没有设置自增长。
尝试增加修改表,添加自增长。
ALTER TABLE sh_incentive_item MODIFY id SMALLINT UNSIGNED AUTO_INCREMENT;
报错
[SQL] ALTER TABLE sh_incentive_item MODIFY id SMALLINT UNSIGNED AUTO_INCREMENT;
[Err] 1833 - Cannot change column 'id': used in a foreign key constraint 'FK_sh_incentive_item_id' of table 'storehelper.sh_incentive'
发现是因为外键的影响,不能随便的更改表结构。
要想更改表结构,首先要把基层的表修改了。
A表 作为B表的外键,A表不能随便修改。
B表 有A表的外键,必须先处理好B,然后A才能修改。
索性,我就把表中的外键全部去除。
原SQL
SET FOREIGN_KEY_CHECKS=; -- ----------------------------
-- Table structure for `sh_incentive`
-- ----------------------------
DROP TABLE IF EXISTS `sh_incentive`;
CREATE TABLE `sh_incentive` (
`id` int() NOT NULL COMMENT '编号',
`item_id` int() DEFAULT NULL COMMENT '名称',
`agent_id` int() DEFAULT NULL COMMENT '关联代理商',
`money` double(,) NOT NULL COMMENT '金额',
`year` int() NOT NULL COMMENT '年份',
`month` int() NOT NULL COMMENT '月份',
`addtime` int() NOT NULL COMMENT '添加时间',
PRIMARY KEY (`id`),
KEY `FK_sh_incentive_item_id` (`item_id`),
CONSTRAINT `FK_sh_incentive_item_id` FOREIGN KEY (`item_id`) REFERENCES `sh_incentive_item` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='激励设定'; -- ----------------------------
-- Records of sh_incentive
-- ---------------------------- -- ----------------------------
-- Table structure for `sh_incentive_item`
-- ----------------------------
DROP TABLE IF EXISTS `sh_incentive_item`;
CREATE TABLE `sh_incentive_item` (
`id` int() NOT NULL COMMENT '编号',
`name` varchar() NOT NULL COMMENT '名称',
`intro` varchar() NOT NULL COMMENT '说明',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='系统激励项'; -- ----------------------------
-- Records of sh_incentive_item
-- ---------------------------- -- ----------------------------
-- Table structure for `sh_opener_bonus`
-- ----------------------------
DROP TABLE IF EXISTS `sh_opener_bonus`;
CREATE TABLE `sh_opener_bonus` (
`id` int() NOT NULL COMMENT '编号',
`opener_id` int() DEFAULT NULL COMMENT '员工编号',
`incentive_id` int() DEFAULT NULL COMMENT '激励条件id',
`remark` varchar() DEFAULT NULL COMMENT '备注说明',
`addtime` int() DEFAULT NULL COMMENT '记录时间',
PRIMARY KEY (`id`),
KEY `FK_sh_openernus_opener_id` (`opener_id`),
KEY `FK_sh_openernus_incentive_id` (`incentive_id`),
CONSTRAINT `FK_sh_openernus_incentive_id` FOREIGN KEY (`incentive_id`) REFERENCES `sh_incentive` (`id`),
CONSTRAINT `FK_sh_openernus_opener_id` FOREIGN KEY (`opener_id`) REFERENCES `sh_opener` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='拓展员奖金'; -- ----------------------------
-- Records of sh_opener_bonus
-- ---------------------------- -- ----------------------------
-- Table structure for `sh_opener_bonus_payment`
-- ----------------------------
DROP TABLE IF EXISTS `sh_opener_bonus_payment`;
CREATE TABLE `sh_opener_bonus_payment` (
`id` int() NOT NULL COMMENT '编号',
`opener_id` int() NOT NULL COMMENT '拓展员',
`agent_id` int() DEFAULT NULL COMMENT '代理商',
`money` double(,) NOT NULL COMMENT '金额',
`trode_number` varchar() NOT NULL COMMENT '转账流水号',
`addtime` int() NOT NULL COMMENT '添加时间',
PRIMARY KEY (`id`),
KEY `FK_sh_openerent_opener_id` (`opener_id`),
CONSTRAINT `FK_sh_openerent_opener_id` FOREIGN KEY (`opener_id`) REFERENCES `sh_opener` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='拓展员奖金发放'; -- ----------------------------
-- Records of sh_opener_bonus_payment
-- ----------------------------
把外键统统去掉
-- ----------------------------
-- Table structure for `sh_opener_bonus_payment`
-- ----------------------------
DROP TABLE IF EXISTS `sh_opener_bonus_payment`;
CREATE TABLE `sh_opener_bonus_payment` (
`id` int() NOT NULL COMMENT '编号',
`opener_id` int() NOT NULL COMMENT '拓展员',
`agent_id` int() DEFAULT NULL COMMENT '代理商',
`money` double(,) NOT NULL COMMENT '金额',
`trode_number` varchar() NOT NULL COMMENT '转账流水号',
`addtime` int() NOT NULL COMMENT '添加时间',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='拓展员奖金发放'; -- ----------------------------
-- Table structure for `sh_opener_bonus`
-- ----------------------------
DROP TABLE IF EXISTS `sh_opener_bonus`;
CREATE TABLE `sh_opener_bonus` (
`id` int() NOT NULL COMMENT '编号',
`opener_id` int() DEFAULT NULL COMMENT '员工编号',
`incentive_id` int() DEFAULT NULL COMMENT '激励条件id',
`remark` varchar() DEFAULT NULL COMMENT '备注说明',
`addtime` int() DEFAULT NULL COMMENT '记录时间',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='拓展员奖金'; -- ----------------------------
-- Records of sh_opener_bonus
-- ---------------------------- -- ----------------------------
-- Table structure for `sh_incentive`
-- ----------------------------
DROP TABLE IF EXISTS `sh_incentive`;
CREATE TABLE `sh_incentive` (
`id` int() NOT NULL COMMENT '编号',
`item_id` int() DEFAULT NULL COMMENT '名称',
`agent_id` int() DEFAULT NULL COMMENT '关联代理商',
`money` double(,) NOT NULL COMMENT '金额',
`year` int() NOT NULL COMMENT '年份',
`month` int() NOT NULL COMMENT '月份',
`addtime` int() NOT NULL COMMENT '添加时间',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='激励设定'; -- ----------------------------
-- Records of sh_incentive
-- ---------------------------- -- ----------------------------
-- Table structure for `sh_incentive_item`
-- ----------------------------
DROP TABLE IF EXISTS `sh_incentive_item`;
CREATE TABLE `sh_incentive_item` (
`id` int() NOT NULL COMMENT '编号',
`name` varchar() NOT NULL COMMENT '名称',
`intro` varchar() NOT NULL COMMENT '说明',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='系统激励项'; -- ----------------------------
-- Records of sh_incentive_item
-- ----------------------------
上面的顺序很重要哦。顺序有误,就不能执行成功!
处理好后,就可以添加自增长了。
由于外键的存在引发的一个mysql问题 Cannot change column 'id': used in a foreign key constraint的更多相关文章
- MySQL设置外键报错 #1452 - Cannot add or update a child row: a foreign key constraint fails 解决方法
MySQL数据库,当我尝试在A表中设置B表的主键为外键时,报出错误:#1452 - Cannot add or update a child row: a foreign key constraint ...
- 删除带外键的表【foreign key constraint fails】报错
title: 删除带外键的表[foreign key constraint fails]报错 date: 2018-08-02 21:59:06 tags: 数据库 --- 遥想当时正在学hibern ...
- Constraint6:更新外键约束(Foreign Key Constraint)的引用列
在SQL Server中,表之间存在引用关系,引用关系通过创建外键约束(Foreign Key Constraint)实现.如果一个Table中的column被其他Table引用,那么该表是参考表,或 ...
- mysql执行带外键的sql文件时出现mysql ERROR 1215 (HY000): Cannot add foreign key constraint的解决
ERROR 1215 (HY000): Cannot add foreign key constraint 最近在建表时遇到了这个错误,然后找了下找到了解决办法,记录下: 本来是要建两张表: 1 2 ...
- MySQL添加外键时报错 ERROR 1215 (HY000): Cannot add foreign key constraint
1.数据类型 2.数据表的引擎 数据表 mysql> show tables; +------------------+ | Tables_in_market | +--------- ...
- mysql删除有外链索引数据,Cannot delete or update a parent row: a foreign key constraint fails 问题的解决办法
mysql删除有外链索引数据Cannot delete or update a parent row: a foreign key constraint fails 问题的解决办法查询:DELETE ...
- Hibernate 注解多对一 要求在多那边产生一个外键而不会另外产生一个表
在使用hibernate注解的时候,我们映射一对多时,有时候莫名其妙的产生了两张表,其中一张表是A_B,这并不符合数据库中多的一方放置一个外键的原则,那么如何控制只产生一个表呢,请看下面的例子: 多的 ...
- hibernate4一对多关联多方多写一次外键导致无法创建java.lang.NullPointerException以及Cannot add or update a child row: a foreign key constraint fails
一篇文章里边有多张图片,典型的单向一对多关系 多方 当程序运行到这一句的时候必然报错 但是参考书也是这样写的 其中em是 EntityManager em = JPA.createEntityMana ...
- SQL 语句外键 a foreign key constraint fails
queryRunner.update("SET FOREIGN_KEY_CHECKS = 0;"); queryRunner.update(sql, pid); queryRunn ...
随机推荐
- hello
#include <iostream> int main() { std::cout << "请输入两个数字:" << std::endl; , ...
- Selenium2+python自动化31-生成测试报告
前言 最近小伙伴们总有一些测试报告的问题,网上的一些资料生成报告的方法,我试了都不行,完全生成不了,不知道他们是怎么生成的,同样的代码,有待研究. 今天小编写一下可以生成测试报告的方法.个人觉得也是最 ...
- java多线程学习-同步之线程通信
这个示例是网上烂大街的,子线程循环100次,主线程循环50次,但是我试了很多次,而且从网上找了很多示例,其实多运行几次,看输出结果并不正确.不知道是我转牛角尖了,还是怎么了.也没有大神问,好痛苦.现在 ...
- ZT 趋势移动安全apk
趋势移动安全 应用截图 应用简介 趋势移动安全( Mobile Security) 是一款专业的Android移动安全软件.利用趋势科技世界领先的云安全技术,保护用户避免被移动恶意程序骚扰,避免个 ...
- python学习之——小闹钟(持续完善ing)
"啊,坏了,我忘了那啥啥了~~~" 为了不坏了,动手做一个小闹钟吧,一点点完善的过程一定美好极了,必像等待培育许久的花儿绽放一样,不多说,加油,期待↖(^ω^)↗ #! /usr/ ...
- 文件上传之Html5 + jQuery上传、asp.net web api接收
HTML: <div> <label for="fileUpload"> 选择文件 </label> <br/> <input ...
- 第九章 springboot + mybatis + 多数据源 (AOP实现)
在第八章 springboot + mybatis + 多数据源代码的基础上,做两点修改 1.ShopDao package com.xxx.firstboot.dao; import org.spr ...
- tp 中关于大小写的问题
ThinkPHP3.2.3升级的若干问题和注意事项(持续更新) 现把ThinkPHP3.2.2在升级到3.2.3的过程中需要注意和可能的问题整理如下: (无论如何,在升级之前请确认备份) 1.首先3. ...
- java面试
1. 问一下服务器管理 2. 问一下流操作 3. 问一下多线程.struts是不是多线程的.或者说servlet的机制. 4. MySQL存储引擎 MyISAM 和 InnoDB 5 跨域问题. 6 ...
- SpringMVC与ajax相关知识练习与存档
参考文章(亲测有效): SpringMVC+ajax返回JSON串 jquery ajax例子返回值详解 AJAX $.ajax({url:路径,date:数据,}) //get请求(指定回调函数,参 ...