代码改变世界

开发人员改主键自增列起始值多了个0 !!!

2017-07-24 21:35  ndzj  阅读(269)  评论(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