create table t10(
id int primary key auto_increment,
num char(10)
);
insert into t10(num) values('1'),('2');
set session auto_increment_increment = 5;
set session auto_increment_offset = 5;
insert into t10(num) values('3'),('8');
这个时候查询第三条数据的 id 是 5 ,而不是 3 ,就很疑惑。
1
javaluo 267 天前 via iPhone
offset 是起始点,所以是从五开始始你看看对不
auto_increment_offset 的官方文档定义如下: MySQL 官方文档中对 auto_increment_offset 的解释是,这个系统变量定义了自增列的起始值。当你有多个主从复制或群集节点时,这个变量特别有用,因为它可以帮助避免自增值在不同节点上的重复。 具体来说: • auto_increment_increment 控制自增值之间的间隔。 • auto_increment_offset 决定了序列中第一个 auto_increment 值的起点。 当你插入新行时,自增列的值会从 auto_increment_offset 开始,并按照 auto_increment_increment 设置的值递增。如果表中已经有数据,MySQL 将继续按照这两个参数定义的规则递增,同时确保新的自增值不会和现有值冲突。 在单节点环境中,auto_increment_offset 通常设置为 1 ,但在主从复制或群集环境中,你可以设置不同的偏移量来确保每个节点生成的自增值是唯一的。例如,在一个双节点的环境中,你可以在一个节点上设置 auto_increment_increment 为 2 ,auto_increment_offset 为 1 ,而在另一个节点上设置 auto_increment_increment 为 2 ,auto_increment_offset 为 2 ,这样两个节点生成的自增值就不会冲突。 |
2
Rache1 267 天前
额,你在设置变量,你就没看过这些变量的用途吗
(以下内容未经测试) > mysql 中有自增长字段,在做数据库的主主同步时需要设置自增长的两个相关配置:auto_increment_offset 和 auto_increment_increment 。 > auto_increment_offset 表示自增长字段从那个数开始,他的取值范围是 1 .. 65535 auto_increment_increment 表示自增长字段每次递增的量,其默认值是 1 ,取值范围是 1 .. 65535 Mysql 设置 auto_increment_increment 和 auto_increment_offset - DBArtist - 博客园 https://www.cnblogs.com/DBArtist/p/6053314.html |