由于外键的存在引发的一个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 ...
随机推荐
- SQL时间戳的使用
SQL时间戳的使用 一直对时间戳这个概念比较模糊,相信有很多朋友也都会误认为:时间戳是一个时间字段,每次增加数据时,填入当前的时间值.其实这误导了很多朋友. 1.基本概念 时间戳:数据库中自动生成的唯 ...
- Ubuntu12.04-x64编译Hadoop2.2.0和安装Hadoop2.2.0集群
本文Blog地址:http://www.cnblogs.com/fesh/p/3766656.html 本文对Hadoop-2.2.0源码进行重新编译(64位操作系统下不重新编译会有版本问题) ...
- java基础十二[集合与泛型](阅读Head First Java记录)
集合 List 知道索引顺序的集合,ArrayList.LinkedList.Vector三个子类实现了List接口 ArrayList ArrayList没有排序方法,可以用Collection ...
- JS之延迟处理
$(document).ready(function () { $("#zidong3,#zidong1").click(function () { $("#zidong ...
- C# upnp
//获取Host Name var name = Dns.GetHostName(); Console.WriteLine("用户:" + name); //从当前Host Nam ...
- javascript 的 clientX用法
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8&qu ...
- Bridging signals hdu 1950 (最长上升子序列)
http://acm.split.hdu.edu.cn/showproblem.php?pid=1950 题意:求最长上升(不连续or连续)子序列 推荐博客链接: http://blog.csdn.n ...
- db2 进程
DB2 通用数据库进程全接触 Dwaine Snow, DB2 UDB 和 Informix IDS 产品经理, IBM 多伦多实验室 Dwaine Snow 是 DB2 UDB 分区数据库以及查询巡 ...
- 拓扑排序 POJ 2367
今天网易的笔试,妹的,算法题没能A掉,虽然按照思路写了出来,但是尼玛好歹给个测试用例的格式呀,吐槽一下网易的笔试出的太烂了. 就一道算法题,比较石子重量,个人以为解法应该是拓扑排序. 就去POJ找了道 ...
- TF-IDF 相关概念
概念 TF-IDF是一种统计方法,用以评估一字词对于一个文件集或一个语料库中的其中一份文件的重要程度. TF-IDF加权的各种形式常被搜索引擎应用,作为文件与用户查询之间相关程度的度量或评级. 词频( ...