MySQL自动增量主键增加10

Ole*_*iak 5 mysql azure

在蔚蓝中,我创建了一个新的MySQL数据库实例。在此数据库中,我使用以下脚本创建表:

CREATE TABLE ROLES(
  ID INTEGER PRIMARY KEY AUTO_INCREMENT,
  ROLE_NAME VARCHAR(30) NOT NULL
);
Run Code Online (Sandbox Code Playgroud)

然后,我使用此脚本插入值:

INSERT INTO `beezzy`.`roles` (`ROLE_NAME`) VALUES ('admin');
INSERT INTO `beezzy`.`roles` (`ROLE_NAME`) VALUES ('owner');
INSERT INTO `beezzy`.`roles` (`ROLE_NAME`) VALUES ('consultant');
Run Code Online (Sandbox Code Playgroud)

执行表包含以下行后:

在此处输入图片说明

为什么DB会生成“ 11”和“ 21”之类的ID?我在本地计算机上运行相同的脚本,并且一切正常。ID为“ 1”,“ 2”,“ 3”

100*_*111 6

请运行以下查询。

SELECT @@auto_increment_increment

如果该值大于 1,则1通过以下查询将其设置为:

SET @@auto_increment_increment=1;

注意:此更改仅对当前连接可见。

编辑:

为了全局设置它以便其他连接也可以看到您需要为全局和会话设置它的更改。

SET @@GLOBAL.auto_increment_increment = 1;

SET @@SESSION.auto_increment_increment = 1;
Run Code Online (Sandbox Code Playgroud)

所以其他连接现在可以看到这个变化。

更多的:

如果您重新启动MySQL服务器,此值将被重置。为了使此更改永久化,您需要[mysqld]在您的my.cnf [for linux]my.ini [for windows]文件中的secion下写入此变量。

[mysqld]
auto-increment-increment = 1
Run Code Online (Sandbox Code Playgroud)


Pet*_*ter 6

您的自动增量可能是 10,但这可能是设计使然。Azure 使用 ClearDB,它使用自动增量 10,原因是:即复制。

当我在数据库中使用 auto_increment 键(或序列)时,它们会以不同的偏移量递增 10。为什么?

ClearDB 使用循环复制来提供主-主 MySQL 支持。因此,必须配置某些内容,例如 auto_increment 键(或序列),以便一个主机在所有情况下都不会使用与另一个主机相同的键。为此,我们将 MySQL 配置为跳过某些键,并强制 MySQL 对每个使用的键使用特定的偏移量。我们之所以使用值 10 而不是 2,是为了将来的开发。

您不应更改自动增量值。

清除数据库常见问题解答