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的复制 二.异常描述 误把从节点当成主节点插入一条数据,同一条数据在主.从节点插入都进行了一次插入操作,导致主键冲 ...
随机推荐
- 常用类-CSV---OLEDB
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.D ...
- linux中服务(service)管理
一.介绍 服务(service) 本质就是进程,但是是运行在后台的,通常都会监听某个端口,等待其它程序的请求,比如(mysql , sshd 防火墙等),因此我们又称为守护进程,是Linux 中非常重 ...
- 上传图片到七牛云(客户端 js sdk)
大体思路 上一篇我们讲了如何通过服务器生成一个upToken,那前端拿到这个token后又该如何操作?在这里我给出一个相当简洁的版本. 首先我们来看一下上传的思路:调用七牛模块的upload方法,生成 ...
- flex三个对齐属性的记忆方式
今天在群里聊天有人说 flex的那几个居中属性好难记,时不时都要尝试一下,或者查看一下文档,现在我把我自己的记忆方式分享一下... 1. flex的居中主要是通过这三个属性来实现的: justify- ...
- ArcGIS以数据库作为数据源作为source发布服务步骤详解(以Postgresql为例)及各种发布问题
创建企业级数据库 Data Management Tools-->Geodatabase Administration-->Create Enterprise Geodatabase 按如 ...
- OpenCV:图像的按位运算
首先导包: import numpy as np import cv2 import matplotlib.pyplot as plt def show(image): plt.imshow(imag ...
- read write方式打开PHYSICAL STANDBY,闪回和还原测试
以下大部分都在STANDBY执行,主库执行(两次)的会提示 [STANDBY read write方式打开测试]检查standby状态SQL> SELECT NAME,DATABASE_ROLE ...
- Export Receives The Errors ORA-1555 ORA-22924 ORA-1578 ORA-22922 (Doc ID 787004.1)
Export Receives The Errors ORA-1555 ORA-22924 ORA-1578 ORA-22922 (Doc ID 787004.1) APPLIES TO: Oracl ...
- Bazel 编译工具; tensorflow 编译
什么是bazel https://docs.bazel.build/versions/master/bazel-overview.html 使用 bazel 构建 c++ 工程 https://git ...
- Fiddler安装
1.在网上搜一下fiddler的安装包,下载.下载完成能看到一个exe文件. 2.点击文件安装,同意,选择一个目录进行安装即可. 3.安装完成,打开应用是一个这样的界面. 需要安装包的下面评论.... ...