Автоматическое увеличение значений семян возвращается к старому значению в RDS
Я изменил значение таблицы auto_increment вручную с помощью команды alter, но на следующий день начальное значение auto_increment вернулось к старому значению.
Значение, измененное вручную (6000000000)
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)
Пожалуйста, помогите мне понять, почему это происходит и как мы можем решить это?
1 ответ
Для таблиц InnoDB это ожидаемое и документированное поведение, см.
http://dev.mysql.com/doc/refman/5.5/en/innodb-auto-increment-handling.html:
InnoDB использует счетчик автоинкремента в памяти, пока сервер работает. Когда сервер останавливается и перезапускается, InnoDB повторно инициализирует счетчик для каждой таблицы для первого INSERT в таблицу, как описано ранее.
Перезапуск сервера также отменяет действие параметра таблицы AUTO_INCREMENT = N в операторах CREATE TABLE и ALTER TABLE, который можно использовать с таблицами InnoDB для установки начального значения счетчика или изменения текущего значения счетчика.