首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

MySQL重新设置auto_increment值

需求描述 通常,我们都会在数据库表中设置一个自增字段作为主键,该字段的值会随着添加新记录而自增。 同时也必须注意,这个自增字段的值只会一直增加,即使把记录删除了,该自增字段的值也不会变小。...处于某种目的,如果希望该自增字段值一定是连续的,有2种解决办法: 1.表记录不允许物理删除 2.物理删除表记录后重新设置auto_increment 在此,专门针对重新设置auto_increment...更新auto_increment值 在修改表的auto_increment值之前需要先查看当前值是多少: mysql> select auto_increment from information_schema.tables...如果此时我们将表中的最后10000条数据物理删除掉,那么再插入新的记录时,auto_increment值将会继续增加:60003,60004 ... 。...显然,此时1-50002有记录,50003-60002是没有记录的。

2.1K20

数据插入失败引发的主键auto_increment问题

数据入库后的主键不是连续自增的,主键键值没过几秒就从两千多直接跳到了五千上下。这是为什么?瞬间引起我的注意。 先简单说明下环境。Mysql版本:5.6.23。...为了防止某些数据重复,数据库中对某些字段设置了唯一索引,即unique key。经确认此表也只有一个业务程序在操作。那么,问题就定位到主键的auto_increment属性上了。...大概意思是,Innodb存储引擎的auto_increment计数器是随着mysql-server启动分配,并永久缓存在内存中。...当插入数据失败或者回滚事务时,内存中的auto_increment计算器的值却不会回滚。 举一反三 Innodb存储引擎会引起此问题,那MyISAM存储引擎呢?...,但请务必注明出处,尊重他人劳动 转载请注明:文章转载自:Marser [https://www.marser.cn] 本文标题:数据插入失败引发的主键auto_increment问题 本文固定链接:

2.4K30
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    保存mysql InnoDB的auto_increment值另类方案

    问题描述 mysql数据库有auto_increment这样一个特性,一般是用来设置Integer类型主键自增长。...比如下面的代码: -- 刚创建表,该表没有AUTO_INCREMENT值 create table test( id int(11) primary key not null auto_increment...mysql的上述行为说明在mysql运行过程中InnoDB存储引擎的表,其AUTO_INCREMENT值会随着插入操作持续增长的,但mysql重启之后,AUTO_INCREMENT值并没有持久保存下来,...重启后再插入数据,mysql会以表中最大的id+1作为当前的AUTO_INCREMENT值,新插入的数据的ID就变为这个了。...值保存下来 利用插入后的触发器,在每次插入数据后更新保存的auto_increment值 利用init-file参数,在mysql服务启动时调用一个存储过程,该存储过程负责以保存的auto_increment

    99950

    mysql编写sql脚本:要求表没有主键,但是想查询没有相同值的时候才进行插入

    init-table.sql的脚本(这里面的轻易不动了,保持原结构数据),然后还有个用于后续迭代升级的增量脚本sql,当然我们没有使用flayway技术,使用的是python安装脚本解析读取执行的。...(表没有主键,但是想查询没有相同值的时候才进行插入)模板如果表没有主键,你可以使用 WHERE NOT EXISTS 子查询来在插入数据之前进行条件检查,确保没有相同的值存在。...value1'、'value2' 是对应列的值。在 WHERE NOT EXISTS 子查询中,我们检查表中是否存在与要插入的值匹配的记录。如果不存在,就会执行插入操作。...请注意,FROM dual 是一个虚拟表,在这里用于提供插入语句所需的基础查询。你可以根据实际情况替换 'value1'、'value2' 和对应的列名与值。...使用这种方法,只有当表中没有与要插入的值匹配的记录时,才会执行插入操作。否则,不会插入重复的数据。

    6410

    获取没有设置TTL的key

    一 前言 在运维Redis的时候,总会遇到使用不规范的业务设计,比如没有对key设置ttl,进而导致内存空间吃紧,通常的解决方法是在slave上dump 出来所有的key ,然后对文件进行遍历再分析...遇到几十G的Redis实例,dump + 分析 会是一个比较耗时的操作,为此,我开发了一个小脚本直接连接Redis 进行scan 遍历所有的key,然后在检查key的ttl,将没有ttl的key输出到指定的文件里面...二 代码实现 # encoding: utf-8 """ author: yangyi@youzan.com time: 2018/4/26 下午4:34 func: 获取数据库中没有设置ttl的 key...调用该类相关函数即可实现处理进度的显示 """ i = 0 # 当前的处理进度 max_steps = 0 # 总共需要处理的次数 max_arrow...注意: 代码里面对没有ttl的key的输出做了限制,大家使用的时候可以调整阈值 或者去掉 全部输出到指定的文件里面。欢迎大家使用,并给出功能或者算法上的改进措施。

    1.6K20

    不懂就问:MySQL 自增主键一定是连续的吗?

    可以通过看表详情查看当前自增值,以及查看表参数详情AUTO_INCREMENT值(AUTO_INCREMENT就是当前数据表的自增值) 2. 自增主键值的修改机制?...发现用户没有指定自增 id 的值,获取表 t 当前的自增值 1 ) AUTO_INCREMENT=2 insert into t values(1, 1, 1) (将传入的行的值改成 (1,1,1),...发现用户没有指定自增 id 的值,获取表 t 当前的自增值 2 ) AUTO_INCREMENT=3 insert into t values(2, 1, 1) (将传入的行的值改成 (2,1,1),...如果我们业务插入数据量很大时,这个时候MySQL的性能就会大大下降。 穿插模式(Interleaved) 这个参数的值被设置为 2 时,所有的申请自增主键的动作都是申请后就释放锁。...穿插模式他没有进行任何的上锁设置。在一定情况下是保证了MySQL的性能,但是他无法保证数据的一致性。

    19210

    ArcMap将栅格0值设置为NoData值的方法

    本文介绍在ArcMap软件中,将栅格图层中的0值或其他指定数值作为NoData值的方法。   ...在处理栅格图像时,有时会发现如下图所示的情况——我们对某一个区域的栅格数据进行分类着色后,其周边区域(即下图中浅蓝色的区域)原本应该不被着色;但由于这一区域的像元数值不是NoData值,而是0值,导致其也被着色...因此,我们需要将这一栅格图像中的0值设置为NoData值。这一操作可以通过ArcMap软件的栅格计算器来实现,但其操作方法相对复杂一些;本文介绍一种更为简便的方法,具体如下所示。   ...随后,在弹出的窗口中,我们只需要配置两个参数。首先就是下图中上方的红色方框,选择我们需要设置的栅格文件即可。...如果我们是需要对其他指定的数值设置,就在这里填写这一指定的数值即可。   设置完毕后,可以在栅格图层的属性中看到“NoData Value”一项已经是0值了。

    57010

    我没有资格骂Seurat的更新吗

    主要是因为我们依赖于这个V4的版本的Seurat流程做出来了大量的公共数据集的单细胞转录组降维聚类分群流程,100多个公共单细胞数据集全部的处理,链接:https://pan.baidu.com/s/1MzfqW07P9ZqEA_URQ6rLbA...pwd=3heo,而且也有海量的配套视频教程在b站,视频号等渠道,基本上大家能看到的中文笔记都是我们分享的。。。。...但是,我表明态度的多个推文里面都被“匿名者”阴阳怪气的怼了一下,说我这样的写教程(英文教程搬运工)的渣渣没有资格骂开发者。。。...同样的道理,单细胞转录组数据分析也是不等于Seurat流程,但是因为有我们生物信息学自媒体的推广,最基础的往往是降维聚类分群,参考前面的例子:人人都能学会的单细胞聚类分群注释 ,详细的拆分成为基础10...最后为什么是Seurat一家独大呢 我大胆的推测,就是因为我们生物信息学自媒体的推广,我们大力宣传生物信息学入门编程语言是R语言,虽然说基于R语言的单细胞转录组数据分析也有大量的其它类似于Seurat的流程

    35710

    记录不存在则插入,存在则更新 → MySQL 的实现方式有哪些?

    很多情况下,我们的主键是 int 或者 bigint 类型,并且设置成了自增     不管是 int 还是 bigint ,都有一个最大值,如果一直自增下去,总有一天会达到最大值(可能到地老天荒也达不到这个值...的数据是一致的,但是 master 上的下一个自增主键是 AUTO_INCREMENT=12 ,而 slave 上却是 AUTO_INCREMENT=11     可能会有人觉得:数据一致就行,下一个自增主键不一致有什么关系...所以 1,2 仅仅只是用来区分插入和更新,2 并非真正受影响的行数   主键明明没有变化,为什么 AUTO_INCREMENT=13 自增了 1 ?   ...这和 MySQL 的主键自增的参数有关 innodb_autoinc_lock_mode ,它有 3 个值 0,1,2 mysql5.1 之后其默认值是 1   因为 innodb_autoinc_lock_mode...,也会导致 AUTO_INCREMENT 自增,加速了主键的衰老   同时也会导致主键的跳跃   2、主从切换问题   与 replace into 类似, master 上的更新导致 AUTO_INCREMENT

    2.2K10
    领券