2017-03-01 71 views
1

我通过alter命令手动更改了某个表的auto_increment值,但第二天auto_increment种子值恢复为旧值。自动递增种子值在RDS上恢复为旧值

手动更改值(60亿)

mysql> select now(); 
+---------------------+ 
| now()    | 
+---------------------+ 
| 2017-02-28 18:48:41 | 
+---------------------+ 
1 row in set (0.00 sec) 

mysql> show create table fav_tab; 
+-----------+----------------------------------------------------------------------------------------------------------- 
| Table  | Create Table 
+-----------+----------------------------------------------------------------------------------------------------------- 
| fav_shows | CREATE TABLE `fav_tab` (
    `FAV_tab_ID` int(11) NOT NULL AUTO_INCREMENT, 
    `USER_ID` bigint(20) unsigned NOT NULL, 
    `SERIES_ID` varchar(50) DEFAULT NULL, 
    `Creation_dt` datetime DEFAULT NULL, 
    PRIMARY KEY (`FAV_tab_ID`), 
    KEY `USER_ID` (`USER_ID`), 
    KEY `IDX_SeriesID` (`SERIES_ID`), 
    CONSTRAINT `FK_fav_tab_user` FOREIGN KEY (`USER_ID`) REFERENCES `user` (`USER_ID`) ON DELETE CASCADE 
) ENGINE=InnoDB AUTO_INCREMENT=6000000000 DEFAULT CHARSET=latin1 | 
+-----------+----------------------------------------------------------------------------------------------------------- 
1 row in set (0.00 sec) 

第二天值自动(207458739)

mysql> select now(); 
+---------------------+ 
| now()    | 
+---------------------+ 
| 2017-03-01 11:23:26 | 
+---------------------+ 
1 row in set (0.00 sec) 

mysql> show create table fav_tab; 
+-----------+------------------------------------------------------------------------------------------------- 
| Table  | Create Table 
+-----------+------------------------------------------------------------------------------------------------- 
| fav_shows | CREATE TABLE `fav_tab` (
    `FAV_tab_ID` int(11) NOT NULL AUTO_INCREMENT, 
    `USER_ID` bigint(20) unsigned NOT NULL, 
    `SERIES_ID` varchar(50) DEFAULT NULL, 
    `Creation_dt` datetime DEFAULT NULL, 
    PRIMARY KEY (`FAV_tab_ID`), 
    KEY `USER_ID` (`USER_ID`), 
    KEY `IDX_SeriesID` (`SERIES_ID`), 
    CONSTRAINT `FK_fav_tab_user` FOREIGN KEY (`USER_ID`) REFERENCES `user` (`USER_ID`) ON DELETE CASCADE 
) ENGINE=InnoDB AUTO_INCREMENT=207458739 DEFAULT CHARSET=latin1 | 
+-----------+------------------------------------------------------------------------------------------------- 
1 row in set (0.00 sec) 

改变请帮我明白了,为什么发生这种情况,我们怎么能解决它?

+0

正如您所发现的那样,使用该功能可能会造成麻烦。 –

回答

1

对于InnoDB表,这是预期和记录行为,请参阅

​​:只要

InnoDB使用在内存中的自动增长计数器作为服务器 运行。当服务器停止并重新启动时,InnoDB将 计数器重新初始化为表中第一个INSERT的每个表的计数器,如前面描述的 。

服务器重启也取消AUTO_INCREMENT = N 表选项在CREATE TABLE和ALTER TABLE语句,它可以与 InnoDB表使用来设置初始计数器值或改变 当前计数器值的效果。

+0

非常感谢你@Anil kumar它有帮助 –