2016-01-21 4 views
0

Я вижу странное поведение, когда число номеров автоинкремент увеличивается только на шаге 2 вместо 1. Таким образом, я заканчиваю идентификаторами строк как 1, 3, 5, 7. Я использую MySQL 5.6 + InnoDB как двигатель. Любая идея, почему эта странность?MySQL auto increment column

mysql> select version(); 
+-----------------+ 
| version()  | 
+-----------------+ 
| 5.6.20-68.0-log | 
+-----------------+ 
1 row in set (0.00 sec) 

mysql> show create table temp_table; 
| superset_version | CREATE TABLE `temp_table` (
    `_id` int(11) NOT NULL AUTO_INCREMENT COMMENT 'comm1', 
    `name` varchar(100) NOT NULL COMMENT 'comm2', 
    `start_time` bigint(20) NOT NULL COMMENT 'comm3', 
    `updated_at` bigint(20) NOT NULL COMMENT 'comm4', 
    `status` varchar(50) NOT NULL COMMENT 'comm5', 
    PRIMARY KEY (`_id`) 
) ENGINE=InnoDB AUTO_INCREMENT=27 DEFAULT CHARSET=utf8 | 

Обратите внимание, что вставка увеличившей _id столбцов разности 2.

mysql> insert into superset_version(name, start_time, updated_at, status) value("TEMP ROW", -1, -1, "erro"); 
    Query OK, 1 row affected, 1 warning (0.00 sec) 

mysql> select * from superset_version order by _id desc limit 3; 
+-----+----------+------------+------------+--------+ 
| _id | name  | start_time | updated_at | status | 
+-----+----------+------------+------------+--------+ 
| 33 | TEMP ROW |   -1 |   -1 | erro | 
| 31 | TEMP ROW |   -1 |   -1 | erro | 
| 29 | TEMP ROW |   -1 |   -1 | erro | 
+-----+----------+------------+------------+--------+ 
3 rows in set (0.00 sec) 
+0

* «1 предупреждение» * ... 'mysql> ПОКАЗАТЬ ПРЕДУПРЕЖДЕНИЯ;' –

+0

. К сожалению, я поменял столбцы раньше в своей вставке и вставил эту версию, но затем я понял и исправил инструкцию insert, но забыл вставить правильный вывод , Будьте уверены, вышеупомянутое заявление не дает никаких предупреждений. – Richeek

ответ

1

auto_increment_increment установка, скорее всего, установлена ​​на 2, поэтому MySQL увеличивает число авто Инкримента 2. Используйте show varibles like ... команды для проверьте настройку.

+0

Thats true! '' 'mysql> показывать переменные типа 'auto_increment_increment'; + -------------------------- + ------- + | Variable_name | Значение | + -------------------------- + ------- + | auto_increment_increment | 2 | + -------------------------- + ------- + 1 строка в наборе (0,00 сек) '' ' – Richeek

+0

И это может быть связано с установкой «двух мастеров» и написанием для обоих мастеров. (Опасная настройка.) –

1

для двойной проверки вы можете попробовать:

SELECT AUTO_INCREMENT 
From `information_schema`.`TABLES` 
WHERE TABLE_NAME = '<<YOUR TABLE NAME HERE>>' AND 
TABLE_SCHEMA = '<< YOUR DATABASE NAME HERE >>' 

если шаг действительно равен 2, то его можно заменить.

или один другой способ: Проверить значения в: mysql.cnf/INI:

auto-increment-increment 
auto-increment-offset