MySQL自动增量主键增加10

时间:2016-03-10 06:25:14

标签: mysql azure

在azure上我创建了一个新的MySQL数据库实例。在这个db中,我使用这个脚本创建了一个表:

CREATE TABLE ROLES(
  ID INTEGER PRIMARY KEY AUTO_INCREMENT,
  ROLE_NAME VARCHAR(30) NOT NULL
);

然后我使用这个脚本插入值:

INSERT INTO `beezzy`.`roles` (`ROLE_NAME`) VALUES ('admin');
INSERT INTO `beezzy`.`roles` (`ROLE_NAME`) VALUES ('owner');
INSERT INTO `beezzy`.`roles` (`ROLE_NAME`) VALUES ('consultant');

执行表包含这样的行后:

enter image description here

为什么数据库会生成类似' 11'和' 21'? 我在本地机器上运行相同的脚本,一切正常。 ID是' 1',' 2',' 3'

2 个答案:

答案 0 :(得分:4)

请运行以下查询。

SELECT @@auto_increment_increment

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

SET @@auto_increment_increment=1;

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

修改

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

SET @@GLOBAL.auto_increment_increment = 1;

SET @@SESSION.auto_increment_increment = 1;

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

更多

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

[mysqld]
auto-increment-increment = 1

答案 1 :(得分:2)

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

  

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

     

ClearDB使用循环复制来提供master-master MySQL   支持。因此,某些事情,如auto_increment键(或   必须配置序列,以便一个主人不使用   在所有情况下,与另一个相同的密钥。我们通过配置MySQL来实现这一点   跳过某些键,并强制MySQL使用特定的偏移量   对于每个使用的密钥。我们使用10而不是2的原因是   为了未来的发展。

您不应更改自动增量值。

cleardb faq