mysql修改数据 -- 主键冲突
mysql 插入数据唯一键冲突
前提: 修改数据三种可用的方法解决主键冲突的问题
1. insert into ... on duplicate key update set ...
2. update ... set = case key when ... then ... when ... then ... else end where ...;
3. replace into ... (与1相似,但若主键冲突会先删除原数据,后再插入新数据 ,所以运用时最好带上主键)
例:
table : dev_wlcolor ;
field : primary key(wlcolorid) , union index(wlid , yscode , yscode);
有两条数据:
wlcolorid :108 wlid:367 yscode:A type:2
wlcolorid :114 wlid:367 yscode:B type:2
现在需要批量修改为:
wlcolorid :108 wlid:367 yscode:B type:2
wlcolorid :114 wlid:367 yscode:A type:2
测试过程:
1. sql :insert into dev_wlcolor(`wlcolorid` ,`wlid`,`yscode` `type`) values (114 ,'367' , 'B' , 2) , (108 ,'367', 'A' 2) on duplicate key update `yscode` = values(`yscode`);
测试结果 :因为虽然是批量插入数据,但mysql 数据库 每插入一条数据都会检测数据是否冲突 , 当插入数据 wlcolorid 为 108 时发现数据库中存在该唯一键 ,后mysql 尝试把yscode字段的A改为B ,但发现如果更新yscode字段发现
wlcolorid 为114 这条数据也存在一个唯一键 wlid-yscode-type(367-B-2),所以产生唯一键冲突 ,修改数据失败;
2. sql :update dev_wlcolor set yscode = case wlcolorid when 108 then 'B' when 114 then 'A' else yscode end where wlcolorid in(108 , 114);
测试结果 :同上;
3. sql : replace into dev_wlcolor(`wlcolorid` ,`wlid`,`yscode`, `type`) values (114 ,'367' , 'B' , 2) , (108 ,'367', 'A' 2);
测试结果 : 因为每次有唯一键冲突 , mysql 都会先把数据删除 , 再插入一条新的数据 , 所以修改数据成功
tip: 使用 insert ignore table(...) values(...) 插入数据时可跳过主键(或唯一键)冲突的数据 而继续插入剩下的数据;
mysql修改数据 -- 主键冲突的更多相关文章
- sqoop从hive导入数据到mysql时出现主键冲突
今天在将一个hive数仓表导出到mysql数据库时出现进度条一直维持在95%一段时间后提示失败的情况,搞了好久才解决.使用的环境是HUE中的Oozie的workflow任何调用sqoop命令,该死的o ...
- mysql主从之主键冲突
收到短信报警,两台数据库都报slave同步失败了,先说明一下环境,架构:lvs+keepalived+amoeba+mysql,主主复制,单台写入, 主1:192.168.0.223(写) 主2:19 ...
- mysql插入报主键冲突,解决方法主键索引重新排序
1.备份表结构 create table table_bak like table_name; 2.备份表数据 insert into table_bak select * from table_na ...
- mysql修改联合主键
参考 https://blog.csdn.net/BockSong/article/details/80933477 alter table TABNAME drop primary key; alt ...
- mysql主从:主键冲突问题
1.检查从库 show slave status \G; Slave_IO_Running: YesSlave_SQL_Running: No 2.出现类似如下的报错: Last_SQL_Error: ...
- MySql中利用insert into select 准备数据uuid主键冲突
MYSQL 中表1需要准备大量数据,内容主要取自表2,id必须为32位uuid (项目所有表都是这样,没办法), 准备这样插入: INSERT INTO TBL_ONE (ID, SOID, SNAM ...
- sqlite里执行查询提示未启用约束、主键冲突之——数据竟能超字段长度存储
数据表设计如图:szflbm为主键 数据表主键数据: 以上数据在查询时,执行到该语句adapter.Fill(table); 提示主键冲突. 解决: 1.尝试修改数据,把ZC1改成ZZ,正常.说明原因 ...
- mysql 主从,主主,主主复制时的主键冲突解决
原理:slave 的i/o thread ,不断的去master抓取 bin_log, 写入到本地relay_log 然后sql thread不断的更新slave的数据 把主服务器所有的数据复制给从服 ...
- MySQL Last_SQL_Errno: 1062----经典错误,主键冲突
一.基础信息 1. Centos7.4 2.MySQL 5.7.21 3.基于gtid的复制 二.异常描述 误把从节点当成主节点插入一条数据,同一条数据在主.从节点插入都进行了一次插入操作,导致主键冲 ...
随机推荐
- WPF customize DelegateCommand
using System; using System.Collections.Generic; using System.ComponentModel; using System.Linq; usin ...
- LayUi 树形组件tree 实现懒加载模式,展开父节点时异步加载子节点数据
LayUi框架中树形组件tree官方还在持续完善中,目前最新版本为v2.5.5 官方树形组件目前还不支持懒加载方式,之前我修改一版是通过reload重载实例方法填充子节点数据方式,因为递归页面元素时存 ...
- Kafka学习(一)
官网 kafka.apache.org 集群部署 消息中间键 --> 分布式流式平台 Kafka Streaming Flume: 1个进程包含三个角色 source channle sink ...
- java直接存取MS Access的mdb数据库文件
jdbc 访问 access 的 mdb 数据库文件,使用一个叫ucanaccess的开发包实现这个功能. "Supported Access formats: 2000,2002/2003 ...
- PAT甲级|1151 LCA in a Binary Tree 先序中序遍历建树 lca
给定先序中序遍历的序列,可以确定一颗唯一的树 先序遍历第一个遍历到的是根,中序遍历确定左右子树 查结点a和结点b的最近公共祖先,简单lca思路: 1.如果a和b分别在当前根的左右子树,当前的根就是最近 ...
- deepin/debian 安装docker
简介 Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化.容器是完全使用沙箱机制,相互之间不会 ...
- Leetcode 90. 子集 II
地址 https://leetcode-cn.com/problems/subsets-ii/ 给定一个可能包含重复元素的整数数组 nums,返回该数组所有可能的子集(幂集). 说明:解集不能包含重 ...
- [C5W3] Sequence Models - Sequence models & Attention mechanism
第三周 序列模型和注意力机制(Sequence models & Attention mechanism) 基础模型(Basic Models) 在这一周,你将会学习 seq2seq(sequ ...
- (day59)十一、CSRF、Auth模块、impotlib模块、settings源码
目录 一.模拟实现中间件的编程思想 (一)impotlib模块 (二)实现功能的配置使用 二.跨站请求伪造CSRF (一)由来 (二)form表单的CSRF (三)ajax中的CSRF (1)通过da ...
- 微信小程序图像增强img.superresolution接口
整体流程: 获得access_token 调用img.superresolution得到media_id 根据media_id下载图片 注:虽然以下的几个接口都是服务端API,但是我都是在客户端调用的 ...