【发布时间】:2021-01-26 17:52:36
【问题描述】:
我将 ClearDB 用于 mysql 数据库。我有一个带有自动递增主键的表。问题是它不是递增 1,而是递增 10。请问我该如何解决这个问题?
此外,当我在本地主机上测试数据库时,增量工作正常。
【问题讨论】:
我将 ClearDB 用于 mysql 数据库。我有一个带有自动递增主键的表。问题是它不是递增 1,而是递增 10。请问我该如何解决这个问题?
此外,当我在本地主机上测试数据库时,增量工作正常。
【问题讨论】:
MySQL 对此有一个配置选项:auto_increment_increment。可以在 ClearDB 主机上将选项设置为 10,但在本地主机上设置为 1。
在每个环境中检查它:
SELECT @@auto_increment_increment;
如果在 ClearDB 环境中设置为 10,您必须询问设置该环境的人为什么要这样配置。可能有充分的理由。
不幸的是,它是一个全局设置,所以如果它设置在服务器上,它会影响该 MySQL 实例上所有数据库中的所有表。
您可以覆盖每个会话的值,因此如果您希望您的应用使用与全局值不同的值,您可以在执行任何 INSERT 之前将其作为 SQL 查询执行:
SET auto_increment_increment = 1;
但这仅对当前会话生效,因此每次打开新会话时都必须这样做。
还要仔细检查这个相关选项,因为如果增量已更改,它通常会设置为非默认值:
SELECT @@auto_increment_offset;
【讨论】:
ClearDB 将 auto_increment 值全局设置为 10,以促进它们执行的集群功能。你不能覆盖这个!即使在单租户集群上,这始终是 10 的倍数。他们不会为您调整。
【讨论】: