zoukankan      html  css  js  c++  java
  • 开发人员改主键自增列起始值多了个0 !!!

    2017-07-23 晚21:21接到开发打来的电话说mysql自增列改大后还能修改吗?
    原由:因领导说要保留id 99999和 98888这样的id号 自己用,然后开发就自己改了user_login_account表自增列起始值,开发本想改成100002,然而他多加了一个0,搞成了1000002,这就有点杯具了,
    于是开发想试图搞这个值改小成100002,结果改不回来了,他就找到我处理。本想
     
    1 首先和开发沟通后确定影响到了2张表,一个表是user_login_account的自增id列,另一张表是user_info的account_id和user_code列 (非自增)
    然后要查出来新数据写入了多少 条和是从哪条开始是100W自增。
    1.查看user_login_account表最新数据数据写入id列为
    1000412
    2.id断点位置如下
    | 1000004 |
    | 1000003 |
    | 1000002 |
    | 98435 |
    | 98434 |
     
    1.查看user_info表最新数据数据写入account_id和user_code列为
    1000412 1000412
    2 account_id和user_code断点位置
    | 1000006 | 1000006 |
    | 1000005 | 1000005 |
    | 1000004 | 1000004 |
    | 1000003 | 1000003 |
    | 1000002 | 1000002 |
    | 98435 | 98435 |
    | 98434 | 98434 |
     
    解决:
    改user_login_account新数据自增列,并把自增起始值改成100413,这次操作没有关业务当时看到凌晨没啥 数据写入,就直接 改了。
    #!/bin/bash
     
    for i in {1000002..1000412}
    do
    #ii=`echo ${i/00/}`
    ii=$((i-900000))
    mysql -udb -pabc -e "use db;update user_login_account set id='$ii' where id='$i'"
    done
     
    ALTER TABLE user_login_account auto_increment=100413;
     
    改user_info表新数据account_id列
    #!/bin/bash
     
    for i in {1000002..1000412}
    do
    ii=$((i-900000))
    mysql -udb -pabc -e "use db;update user_info set account_id='$ii' where account_id='$i'"
    done
     
    改user_info表新数据user_code列
    #!/bin/bash
     
    for i in {1000002..1000412}
    do
    ii=$((i-900000))
    mysql -udb -pabc -e "use db;update user_info set user_code='$ii' where user_code='$i'"
    done
     
     
    #@_@ 欢迎交流!联系人 广西宾阳 阿桂 qq149951292
  • 相关阅读:
    Promise笔记
    srping-cloud-stream集成rocketmq
    mysql锁
    profiling分析
    mysql慢查询
    sql语句中in与exists的使用区别
    数据库死锁的解决办法
    死锁的形成以及处理
    百万数据修改索引,百万数据修改主键
    创建视图索引
  • 原文地址:https://www.cnblogs.com/hmysql/p/7231207.html
Copyright © 2011-2022 走看看