精华内容
下载资源
问答
  • PostgreSQL主键重复处理
    2022-04-15 08:48:33

    批量往表里插入数据时,存在主键重复的情况

    create sequence seq_tablename_id;

    select setval('seq_tablename_id', max(id)) from tablename;

    insert into tablename(id) values(nextval('seq__tablename_id'));

    更多相关内容
  • 前几天开发的同事反馈一个利用load data infile命令导入数据主键冲突的问题,分析后确定这个问题可能是mysql的一个bug,这里提出来给大家分享下。以免以后有童鞋遇到类似问题百思不得其解,难以入眠,哈哈。
  • 删除无主键重复语句

    2018-08-15 13:53:09
    删除无主键重复语句删除无主键重复语句删除无主键重复语句删除无主键重复语句
  • mysql 处理主键重复

    千次阅读 2021-03-15 13:22:28
    -- 1、批量插入,忽略主键重复的数据insert IGNORE intoinsert IGNORE into `stock` (`id`,`name`,`count`,`sale`,`version`)VALUES('1','phone','200','0','0'),('2','phone2','200','0','0'),('3','phone3','...

    select * from stock;

    -- 1、批量插入,忽略主键重复的数据

    insert IGNORE into

    insert IGNORE into `stock` (`id`,`name`,`count`,`sale`,`version`)

    VALUES

    ('1','phone','200','0','0'),

    ('2','phone2','200','0','0'),

    ('3','phone3','200','0','0'),

    ('4','phone4','400','0','0');

    select * from stock;

    -- 2、批量插入数据,会根据主键判断是否有这一条数据,如果有这一条数据,就先删除

    -- 此行数据,然后插入新的数据,否则直接插入新数据

    REPLACE INTO

    REPLACE INTO `stock` (`id`,`name`,`count`,`sale`,`version`)

    VALUES

    ('1','phone','200','0','0'),

    ('2','phone2','200','0','0'),

    ('3','phone3','200','0','0'),

    ('4','phone4','400','0','0');

    select * from stock;

    -- 3、ON DUPLICATE KEY 在句尾指定该语法,他会根据指定的主键或者唯一标示来更新数据库的内容

    -- 具体的操作是想根据唯一标示查看数据库是否存在该记录,如果存在该记录就更新,如果不存在就会插入一条新的记录,

    在sql 结尾加 ON DUPLICATE KEY UPDATE

    INSERT INTO stock (`id`,`name`,`count`,`sale`,`version`)

    VALUES ('4','phone4','400','0','0') ON DUPLICATE KEY UPDATE `name`='安卓';

    展开全文
  • 数据库主键重复

    2021-12-19 11:45:09
    记录一下一个特殊的解决方法,当想往数据库里添加字段时报错Duplicate entry ‘…’ for key 'PRIMARY,但数据库里确定没有重复主键,当时在网上查说是需要设置主键自增,但我想随机生成主键,不想自增。...

    记录一下一个特殊的解决方法,当想往数据库里添加字段时报错Duplicate entry ‘…’ for key 'PRIMARY,但数据库里确定没有重复的主键,当时在网上查说是需要设置主键自增,但我想随机生成主键,不想自增。

    于是我就在数据库里主键处先选择自增,然后运行程序,发现成功了,删除那条数据后将主键自增去掉,再次运行,程序神奇的就不报错了。

    展开全文
  • mybatisPlus插入主键重复问题异常说明修改 异常说明 出现异常的地方(测试) @Test public void addTest() throws InterruptedException { EduTeacherPO eduTeacherPO = new EduTeacherPO(); for (int i = 10; i...

    mybatisPlus插入主键重复问题

    异常说明

    出现异常的地方(测试)

        @Test
        public void addTest() throws InterruptedException {
            EduTeacherPO eduTeacherPO = new EduTeacherPO();
            for (int i = 10; i <= 30; i++) {
                eduTeacherPO.setName("TeacherName"+i);
                eduTeacherPO.setIntro("简介"+i);
                eduTeacherPO.setCareer("教师资历"+i);
                if(i % 2 == 0){
                    eduTeacherPO.setLevel(1);
                }else {
                    eduTeacherPO.setLevel(2);
                }
    //            Thread.sleep(2000);
    //        eduTeacherPO
                eduTeacherMapper.insert(eduTeacherPO);
            }
    
        }
    
    

    报错信息:

    org.springframework.dao.DuplicateKeyException: 
    ### Error updating database.  Cause: java.sql.SQLIntegrityConstraintViolationException: Duplicate entry '1424257641189736449' for key 'PRIMARY'
    ### The error may involve com.lingnan.eduservice.mapper.EduTeacherMapper.insert-Inline
    ### The error occurred while setting parameters
    ### SQL: INSERT INTO edu_teacher  ( id, name, intro, career, level,    gmt_create, gmt_modified )  VALUES  ( ?, ?, ?, ?, ?,    ?, ? )
    ### Cause: java.sql.SQLIntegrityConstraintViolationException: Duplicate entry '1424257641189736449' for key 'PRIMARY'
    ; Duplicate entry '1424257641189736449' for key 'PRIMARY'; nested exception is java.sql.SQLIntegrityConstraintViolationException: Duplicate entry '1424257641189736449' for key 'PRIMARY'
    
    	at org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator.doTranslate(SQLErrorCodeSQLExceptionTranslator.java:243)
    	at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:72)
    	at org.mybatis.spring.MyBatisExceptionTranslator.translateExceptionIfPossible(MyBatisExceptionTranslator.java:73)
    	at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:446)
    	at com.sun.proxy.$Proxy97.insert(Unknown Source)
    	at org.mybatis.spring.SqlSessionTemplate.insert(SqlSessionTemplate.java:278)
    	at com.baomidou.mybatisplus.core.override.PageMapperMethod.execute(PageMapperMethod.java:68)
    	at com.baomidou.mybatisplus.core.override.PageMapperProxy.invoke(PageMapperProxy.java:64)
    	at com.sun.proxy.$Proxy105.insert(Unknown Source)
    	at com.lingnan.AddTestDemo.addTest(AddTestDemo.java:36)
    	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    	at java.lang.reflect.Method.invoke(Method.java:498)
    	at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50)
    	at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
    	at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47)
    	at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
    	at org.springframework.test.context.junit4.statements.RunBeforeTestExecutionCallbacks.evaluate(RunBeforeTestExecutionCallbacks.java:74)
    	at org.springframework.test.context.junit4.statements.RunAfterTestExecutionCallbacks.evaluate(RunAfterTestExecutionCallbacks.java:84)
    	at org.springframework.test.context.junit4.statements.RunBeforeTestMethodCallbacks.evaluate(RunBeforeTestMethodCallbacks.java:75)
    	at org.springframework.test.context.junit4.statements.RunAfterTestMethodCallbacks.evaluate(RunAfterTestMethodCallbacks.java:86)
    	at org.springframework.test.context.junit4.statements.SpringRepeat.evaluate(SpringRepeat.java:84)
    	at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325)
    	at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:251)
    	at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:97)
    	at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
    	at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
    	at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
    	at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
    	at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
    	at org.springframework.test.context.junit4.statements.RunBeforeTestClassCallbacks.evaluate(RunBeforeTestClassCallbacks.java:61)
    	at org.springframework.test.context.junit4.statements.RunAfterTestClassCallbacks.evaluate(RunAfterTestClassCallbacks.java:70)
    	at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
    	at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.run(SpringJUnit4ClassRunner.java:190)
    	at org.junit.runner.JUnitCore.run(JUnitCore.java:137)
    	at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:69)
    	at com.intellij.rt.junit.IdeaTestRunner$Repeater.startRunnerWithArgs(IdeaTestRunner.java:33)
    	at com.intellij.rt.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:221)
    	at com.intellij.rt.junit.JUnitStarter.main(JUnitStarter.java:54)
    Caused by: java.sql.SQLIntegrityConstraintViolationException: Duplicate entry '1424257641189736449' for key 'PRIMARY'
    	at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:117)
    	at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:97)
    	at com.mysql.cj.jdbc.exceptions.SQLExceptionsMapping.translateException(SQLExceptionsMapping.java:122)
    	at com.mysql.cj.jdbc.ClientPreparedStatement.executeInternal(ClientPreparedStatement.java:953)
    	at com.mysql.cj.jdbc.ClientPreparedStatement.execute(ClientPreparedStatement.java:370)
    	at com.zaxxer.hikari.pool.ProxyPreparedStatement.execute(ProxyPreparedStatement.java:44)
    	at com.zaxxer.hikari.pool.HikariProxyPreparedStatement.execute(HikariProxyPreparedStatement.java)
    	at org.apache.ibatis.executor.statement.PreparedStatementHandler.update(PreparedStatementHandler.java:46)
    	at org.apache.ibatis.executor.statement.RoutingStatementHandler.update(RoutingStatementHandler.java:74)
    	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    	at java.lang.reflect.Method.invoke(Method.java:498)
    	at org.apache.ibatis.plugin.Plugin.invoke(Plugin.java:63)
    	at com.sun.proxy.$Proxy151.update(Unknown Source)
    	at org.apache.ibatis.executor.SimpleExecutor.doUpdate(SimpleExecutor.java:50)
    	at org.apache.ibatis.executor.BaseExecutor.update(BaseExecutor.java:117)
    	at org.apache.ibatis.executor.CachingExecutor.update(CachingExecutor.java:76)
    	at org.apache.ibatis.session.defaults.DefaultSqlSession.update(DefaultSqlSession.java:198)
    	at org.apache.ibatis.session.defaults.DefaultSqlSession.insert(DefaultSqlSession.java:185)
    	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    	at java.lang.reflect.Method.invoke(Method.java:498)
    	at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:433)
    	... 36 more
    
    2021-08-08 14:34:17 |INFO  |SpringContextShutdownHook |ExecutorConfigurationSupport.java:208 |org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor |Shutting down ExecutorService 'applicationTaskExecutor'
    2021-08-08 14:34:17 |INFO  |SpringContextShutdownHook |HikariDataSource.java:350 |com.zaxxer.hikari.HikariDataSource |HikariPool-1 - Shutdown initiated...
    2021-08-08 14:34:17 |INFO  |SpringContextShutdownHook |HikariDataSource.java:352 |com.zaxxer.hikari.HikariDataSource |HikariPool-1 - Shutdown completed.
    
    Process finished with exit code -1
    
    

    参考:https://github.com/baomidou/mybatis-plus/issues/2474

    修改

        @Test
        public void addTest() throws InterruptedException {
            EduTeacherPO eduTeacherPO = null;
            for (int i = 200; i <= 300; i++) {
                eduTeacherPO = new EduTeacherPO();
                eduTeacherPO.setName("TeacherName"+i);
                eduTeacherPO.setIntro("简介"+i);
                eduTeacherPO.setCareer("教师资历"+i);
                if(i % 2 == 0){
                    eduTeacherPO.setLevel(1);
                }else {
                    eduTeacherPO.setLevel(2);
                }
                eduTeacherMapper.insert(eduTeacherPO);
            }
    
        }
    

    原因分析:
    测试代码中因为是同一个对象,所以会导致第二次插入会出现异常。

    注意事项:
    (1)@PostConstruct注解是在应用启动的时候执行,而不是非要在post请求前执行
    (2)@PostConstruct注解的内容只会执行一次
    (3)controller默认是单例的,在里面直接定义属性很容易引发线程安全问题

    展开全文
  • 自增列导致主键重复

    2021-01-18 21:30:14
    有记录进行插入时,自增列产生的值就有可能与已有的记录主键冲突,导致...表含有自增主键,并且含有唯一约束4.load data infile 采用replace into语法插入数据【遇到重复唯一约束,直接覆盖】问题发生的原理:1.主库...
  • #执行插入操作,插入过程中可能发生主键重复,如果主键重复那么done被赋值为1 insert into test(id,name) values(1,'xiaowang'); #如果done的值为1的话,实现更新原有数据 if done = 1 then update test set name='...
  • 插入数据主键重复或数据已经存在,则更新这条数据了这个可以使用ON DUPLICATE KEY UPDATE了,下面我们来看一下如何实现我们需要的要求。在做数据库开发的时候,经常会遇到这样的一种情景:当一条数据不存在的时候,...
  • MySQL数据库主键重复原因分析及处理.pdf
  • 前几天开发童鞋反馈一个利用load data infile命令导入数据主键冲突的问题,分析后确定这个问题可能是mysql的一个bug,这里提出来给大家分享下。以免以后有童鞋遇到类似问题百思不得其解,难以入眠,哈哈。废话少说,...
  • 其实在thinkphp自带了这种方案,但是使用的REPLACE INTO语句,REPLACE INTO语句发现主键重复会删除原来的数据,再次新增一条。虽然能够达到我的要求,但是我并不想更新全部字段,目前看来ON DUPLICATE KEY UPDATE语句...
  • 名言:别人用一种方法,我用十种方法,成功胜算将是别人的10倍。——陈景润作为程序员,应该需要具备许许多多的基本功,比如对数据库的增删改查、对基本的控件的熟练使用等。在数据库的插入前,往往需要判断添加的...
  • 首先创建一个person表:create TABLE `person`(`id` int not null auto_increment,`name` VARCHAR(255) ,`age` int,PRIMARY key (`id`))同时打开两个sql窗口set autocommit=off;set @id=-1;SELECTauto_increment ...
  • 转自:http://blog.163.com/liuweiyoung@126/blog/static/173131045201222122732435/mysql中insert into和replace into以及insert ignore用法区别:mysql中常用的三种插入数据的语句:insert ...,数据库会检查主键...
  • 问题描述 ...在排查问题的遇到了一个诡异的问题,mysql 自增主键被删除后,又重复出现的问题 mysql> select * from test; +----+----------------+ | id | name | +----+----------------+ | 1 |
  •  设置一张MySQL表,表里有一个自增主键ID,往表里插入数据,假如插入数据之后表后一行的ID是100,我先删除这条ID为100的记录,然后重新启动服务器,按理说如果再往这个表里插入新的记录,新纪录的ID将为101,对吧...
  • Mybatis-Plus 使用ID_WORKER生成主键id重复 问题描述 目前项目使用的id是mybatis-plus 内置的主键生成策略 ID_WORKER ,最近测试在做性能压测,部署架构是单服务集群的部署方式,然后就发现了id重复的异常,异常...
  • Spring JPA save 实现主键重复抛异常

    千次阅读 2019-11-07 09:29:51
      Introduction 先说说要做的功能 ...希望用数据库的 duplicate primary key 来实现一个简易的锁功能,加锁成功与否取...若主键重复抛出异常一样是: org.springframework.dao.DataIntegrityViolationException;...
  • 由于Mybatis不鼓励捕捉异常,但在某些特定场景下需要捕捉。 代码如下: try{ dao.inser(entity); } catch (Exception e){ if(e instanceof DuplicateKeyException){ return -2; }else { return -1;... }
  • 一,sharding 分表后主键重复问题 背景:使用数据库中间件sharding分表后,数据会根据配置的路由规则,将同一业务场景下的数据存储到不同的表中,而在大部分开发情况下数据库的id都是自增,当联表查询数据时就会出现...
  • MySQL自增主键重复问题的可能

    千次阅读 2019-07-15 15:30:39
    MySQL支持数据字段自增,可以用来作为数据表的主键字段。 自增字段的定义和题外话 看一个数据表的创建实例: DROP TABLE IF EXISTS `spgl_dfxmsplcxxb`; CREATE TABLE `spgl_dfxmsplcxxb` ( `LSH` int(11) NOT...
  • spark写入TIDB主键重复

    2019-09-04 17:18:39
    可能不是因为主键的事情 而是其他字段的长度太短 很奇葩的问题
  • 1、 2、getbyid会根据id查询数据库,而不是获取entity @tableId注解值!!!!!!!!!!!(感谢吴总提醒) 3、我的项目全局查询都会过滤掉已删除的数据;不仔细啊!!!!!!!(再次感谢吴总) ...
  • 真正的原因应该是这样的,两条相同的数据并发进行upsert操作,当同时查询到mongo库里数据不存在时,会转为insert操作,这时插入一条数据成功后,另一条数据再次插入时就会出现主键重复的问题。 四、问题解决 结合...
  • Data Integration - Kettle8.2 使用数据转换抽取oralce到mysql(主键重复) 如果主键重复会报下面错误 而且会停止抽取数据,碰到这种情况,我们需要使用另一个输出,插入或更新,如下图 拖一个到右边替换表输出。...
  • 插入中跳过主键重复报错 mysql 批量插入,批量插入跳过主键重复,简化批量插入 package com.chenfan.finance.utils; import cn.hutool.core.util.ReflectUtil; import com.chenfan.finance.producer...
  • 业务需求删除表中重复数据只保留一行,网上方法很多,分享一个MySQL中删除重复数据只保留一条,但是根据主键保留数据对我们并不适用。因为我们主键重复的mmp。(数据表并没有做主键限制,主键值由hibernate uuid...
  • 第一步:先创建一个和原来表一样的表结构 第二步, 开始搬运数据,先从原来表查去重数据,插到临时表,然后删掉旧表数据;再把数据搬到原来表中。 insert into houseManage Select distinct * from houseManage_temp...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 226,760
精华内容 90,704
关键字:

主键重复