首页 > 代码库 > 开发人员改主键自增列起始值多了个0 !!!
开发人员改主键自增列起始值多了个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
欢迎大家给出意见,大家交流,共同进步。
开发人员改主键自增列起始值多了个0 !!!
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。