MySQL自动递增列

标签 mysql innodb

我看到一个奇怪的行为,我的自动增量列号仅以2而不是1的步长增加。所以我最终得到的行ID为1,3,5,7。我使用MySQL 5.6 + InnoDB作为引擎。知道为什么会出现这种奇怪的现象吗?

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)

最佳答案

auto_increment_increment设置很可能设置为 2,因此 mysql 将自动增量数字增加 2。使用 show varibles like ...命令检查设置。

关于MySQL自动递增列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34913608/

相关文章:

php - Codeigniter 加入来自 2 个数据库的表

mysql - 有没有办法给sql语句指定条件?

mysql - 汇总每日到每月的数据并计算 delta mysql

php - laravel DB,获取表中的所有数据

mysql管理产品尺寸的最佳方式

mysql - MySQL 5.6 早期版本中的 InnoDB Memcached 插件

php - HandlerSocket 给出错误 167 - 这是什么意思?

mysql - 低基数索引仍然会减慢查询速度

mysql - 如何有效查询 "latest questions"?

mysql - 同时更新一行