Mysql 自动递增跳转超过插入的行数?
我在mysql表中插入数据时遇到了一个问题。“自动增量”跳转的行数大于插入的行数。按照以下步骤重现问题。此表未引用其他表。此表上未创建触发器。未对表执行删除查询 步骤1-在mysql中创建一个表Mysql 自动递增跳转超过插入的行数?,mysql,innodb,Mysql,Innodb,我在mysql表中插入数据时遇到了一个问题。“自动增量”跳转的行数大于插入的行数。按照以下步骤重现问题。此表未引用其他表。此表上未创建触发器。未对表执行删除查询 步骤1-在mysql中创建一个表 CREATE TABLE IF NOT EXISTS `tbl_hostel_rooms` ( `id` int(11) NOT NULL AUTO_INCREMENT, `hostel_id` int(11) NOT NULL, `room_no` int(11) NOT NULL,
CREATE TABLE IF NOT EXISTS `tbl_hostel_rooms` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`hostel_id` int(11) NOT NULL,
`room_no` int(11) NOT NULL,
`total_sharing_for_room` tinyint(1) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=1 ;
步骤2-在表中插入10行并分析结果。这将插入10行,自动增量值将设置为11。这也是意料之中的
INSERT INTO `new_db`.`tbl_hostel_rooms` (`id`, `hostel_id`, `room_no`, `total_sharing_for_room`) VALUES (NULL, '1', '101', '3');
INSERT INTO `new_db`.`tbl_hostel_rooms` (`id`, `hostel_id`, `room_no`, `total_sharing_for_room`) VALUES (NULL, '1', '102', '3');
INSERT INTO `new_db`.`tbl_hostel_rooms` (`id`, `hostel_id`, `room_no`, `total_sharing_for_room`) VALUES (NULL, '1', '103', '3');
INSERT INTO `new_db`.`tbl_hostel_rooms` (`id`, `hostel_id`, `room_no`, `total_sharing_for_room`) VALUES (NULL, '1', '104', '3');
INSERT INTO `new_db`.`tbl_hostel_rooms` (`id`, `hostel_id`, `room_no`, `total_sharing_for_room`) VALUES (NULL, '1', '105', '3');
INSERT INTO `new_db`.`tbl_hostel_rooms` (`id`, `hostel_id`, `room_no`, `total_sharing_for_room`) VALUES (NULL, '1', '106', '3');
INSERT INTO `new_db`.`tbl_hostel_rooms` (`id`, `hostel_id`, `room_no`, `total_sharing_for_room`) VALUES (NULL, '1', '107', '3');
INSERT INTO `new_db`.`tbl_hostel_rooms` (`id`, `hostel_id`, `room_no`, `total_sharing_for_room`) VALUES (NULL, '1', '108', '3');
INSERT INTO `new_db`.`tbl_hostel_rooms` (`id`, `hostel_id`, `room_no`, `total_sharing_for_room`) VALUES (NULL, '1', '109', '3');
INSERT INTO `new_db`.`tbl_hostel_rooms` (`id`, `hostel_id`, `room_no`, `total_sharing_for_room`) VALUES (NULL, '1', '110', '3');
步骤3-使用此查询再插入10行,并分析结果
INSERT INTO `tbl_hostel_rooms`(`hostel_id`, `room_no`, `total_sharing_for_room`) select `hostel_id`, `room_no`, `total_sharing_for_room` from tbl_hostel_rooms;
这将再插入10行,自动增量值将设置为26。这是预料不到的。现在只插入一行,自动增量列id将从27开始。
这个问题的解决方案是什么。我认为这是因为,明确提到了“id”列,它是自动递增字段。尝试从查询中删除此字段。问题可能会得到解决。自动增量值用于标识行,但不用于对行进行编号。