【问题标题】:Permanently setting auto_increment_offset in MySQL在 MySQL 中永久设置 auto_increment_offset
【发布时间】:2012-08-15 12:13:15
【问题描述】:

我以 root 身份运行命令:

set @@auto_increment_offset = 2;

但是从其他连接看不到效果。为什么不?它是全球性的。

来自http://dev.mysql.com/doc/refman/5.1/en/replication-options-master.html: “如果设置了任一变量的全局值,其影响将持续到全局值被更改或通过设置会话值覆盖,或者直到 mysqld 重新启动。”

这似乎与我所看到的不一致。

最后,我想知道是否有任何方法可以在不重新启动 mysqld 的情况下为所有客户端永久设置偏移量?

【问题讨论】:

  • 我是在“set @@variable = x”与“set global variable = x”相同的假设下操作的。一点也不真实。
  • 对! "set @@variable = x" 等价于 "SET SESSION variable = x"

标签: mysql auto-increment


【解决方案1】:

根据 MySQL documentation,您需要为 GLOBALSESSION 设置 auto_increment_offset 的值。

SET GLOBAL auto_increment_offset  = 2;
SET SESSION auto_increment_offset  = 2;

SHOW VARIABLES LIKE '%auto_increment_offset%';

如果设置了任一变量的全局值,其影响将持续到全局值被更改或通过设置会话值覆盖,或者直到 mysqld 重新启动。如果设置了本地值,则新值会影响当前用户在会话期间插入新行的所有表的 AUTO_INCREMENT 列,除非在该会话期间更改了值。

【讨论】:

    【解决方案2】:

    要全局设置它,您应该添加前缀 'GLOBAL' 或 '@@global.'。比如——

    SET @@GLOBAL.auto_increment_offset = 2;
    

    “@@”与“SESSION”或“@@session”相同,都是设置会话变量。

    Using System Variables.

    【讨论】:

    • 它还需要添加到配置文件中才能真正永久化。
    猜你喜欢
    • 2013-12-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-21
    • 1970-01-01
    • 2014-01-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多