mysql自增id修改最大值_MySQL自增ID最大值被使用

问题:评论数据表hotel_info_comments自增ID列达到最大值2147483647,但是并不是每一个ID都被使用了

解决办法:清理数据表的跳跃自增ID,保持ID连贯。

解决步骤:

1.   创建评论临时表

create table `hotel_info_comments_tmp` (

`id` int(11) not null auto_increment comment '自增id',

`hotel_id` varchar(50) not null comment '酒店id',

`hotel_type` varchar(10) not null comment '酒店品牌id',

`out_id` varchar(20) not null default '' comment '来源评论id',

`src` varchar(10) not null comment '评论来源,kuaijie,ctrip,elong……',

`room_id` varchar(10) default null comment '房型id',

`order_id` varchar(50) default '' comment '订单id',

`user_id` varchar(50) default '' comment '用户id',

`parent_id` int(11) default null comment '父评论id',

`content` varchar(2000) not null comment '评论内容',

`side` int(1) not null default '1' comment '正面评价:1;负面评价:0',

`aver_score` float default null comment '平均评分',

`loca_score` float default null comment '位置评分0-5之间',

`faci_score` float default null comment '设备评分0-5之间',

`serv_score` float default null comment '服务评分0-5之间',

`hygi_score` float default null comment '卫生评分0-5之间',

`voted` int(1) not null default '0' comment '点赞',

`is_reply` int(1) not null default '0' comment '是否可回复,1:可回复,0:不可回复',

`status` int(1) not null default '1' comment '是否有效,1:有效,0:无效',

`user_name` varchar(50) default null comment '用户名',

`user_type` varchar(10) default 'customer' comment '用户类别,customer, shopper',

`extra_info` varchar(800) not null comment '附加信息',

`create_time` datetime not null comment '创建时间',

`update_time` timestamp not null default current_timestamp on update current_timestamp comment '更新时间',

primary key (`id`),

unique key `outsrcid` (`src`,`out_id`),

key `idx_hotel_idtype` (`hotel_id`,`hotel_type`,`order_id`),

key `idx_user_order` (`user_id`,`order_id`),

key `idx_user_hotel` (`hotel_id`,`hotel_type`,`user_id`),

key `pid_index` (`parent_id`)

) engine=innodb auto_increment=2949076 default charset=utf8 comment='评论信息表';

2.   将线上表的数据插入临时表(自增ID列不转移)

insert into hotel_info_comments_tmp(`hotel_id`,`hotel_type`,`out_id`,`src`,`room_id`,`order_id`,`user_id`,`parent_id`,`content`,`side`,`aver_score`,`loca_score`,`faci_score`,`serv_score`,`hygi_score`,`voted`,`is_reply`,`status`,`user_name`,`user_type`,`extra_info`,`create_time`,`update_time`) select `hotel_id`,`hotel_type`,`out_id`,`src`,`room_id`,`order_id`,`user_id`,`parent_id`,`content`,`side`,`aver_score`,`loca_score`,`faci_score`,`serv_score`,`hygi_score`,`voted`,`is_reply`,`status`,`user_name`,`user_type`,`extra_info`,`create_time`,`update_time` from hotel_info_comments;

3.   检验线上表的的数据和临时表是否一致

select count(*) from hotel_info_comments;

select count(*) from hotel_info_comments_tmp;

4.   删除线上表

drop table hotel_info_comments;

5.   重命名临时表为线上表

rename table hotel_info_comments_tmp to hotel_info_comments;

*注意事项:尝试过alter table hotel_info_comments drop column id.alter tablehotel_info_comments add column id. 表的数据200多万,这样非常慢;当前使用方法不适合更新维护频繁的表。

(sudo ARCHFLAGS=-Wno-error=unused-command-line-argument-hard-error-in-future easy_install MySQL-python)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值