gpt4 book ai didi

mysql - mysql 5.6插入语句中的自动增量漏洞

转载 作者:行者123 更新时间:2023-11-29 13:28:12 28 4
gpt4 key购买 nike

我正在尝试将包含数十亿行的表移动到 MySQL 5.6 中的新目录。我正在尝试将 table1 复制到 table2,然后删除 table1,然后将 table2 重命名为 table1。

    CREATE TABLE `table2` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`col1` int(11) DEFAULT NULL,
`col2` int(11) DEFAULT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `unique_col1_col2` (`col1`,`col2`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8 DATA DIRECTORY='/mysql_data/';

我正在使用以下过程进行复制。

DROP PROCEDURE IF EXISTS copytables;
CREATE PROCEDURE `copytables`()
begin
DECLARE v_id INT(11) unsigned default 0;
declare maxid int(11) unsigned default 0;
select max(id) into maxid from table1;
while v_id < maxid do
insert into table2(col1,col2)
select fbpost_id,fbuser_id from table1 where id >= v_id and id <v_id+100000 ;
set v_id=v_id+100000;
select v_id;
select max(id) into maxid from table1;
select maxid;
end while;
end;

但是现在在table2中每批100000之后,我在id列中出现间隙(在id 199999之后,下一个id是262141)。 Table1 的 id 列中不包含任何间隙。

最佳答案

询问 Google:https://www.google.com/search?q=auto_increment+mysql+gaps+innodb first result解释了这个问题。

通常,您需要能够告诉其他人您到目前为止已经尝试过什么以及为什么它不起作用。在这种情况下,这只是 InnoDB 引擎的一个功能/特性,使其能够快速大容量运行。

关于mysql - mysql 5.6插入语句中的自动增量漏洞,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19844449/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com