Navicat 15无法在表设计界面修改auto_increment_increment步长,该变量需通过查询窗口执行SET @@session.auto_increment_increment=5等SQL语句设置,且仅影响新建表或手动重置AUTO_INCREMENT值的现有表。
Navicat 15 里不能直接可视化改 auto_increment_increment 步长
navicat 15 的表设计界面(右键表 → “设计表”)只允许你勾选 a_i(auto increment),并设置 start value(起始值),但它**不提供任何 ui 元素来修改步长**。所谓“步长”,实际由 mysql 系统变量 auto_increment_increment 控制,而这个变量根本不在 navicat 的字段属性面板里暴露。
步长必须用 SQL 手动设,且分会话级和全局级
你得在 Navicat 的查询窗口里执行 SET 语句,而且要明确区分作用范围:
-
SET @@session.auto_increment_increment = 5;—— 只影响当前连接,关掉这个查询标签页或断开重连就失效 -
SET @@global.auto_increment_increment = 5;—— 影响所有新建立的连接,但需要SUPER权限,生产环境一般禁用
注意:@@session 可简写为 @@,但 @@global 不能省;auto_increment_offset 同理,必须配套设置,否则可能触发意外跳号(比如 offset=2、increment=3,首次插入 id 就是 2,不是 1)。
改完步长后,已有表的自增值不会自动重算
执行 SET @@session.auto_increment_increment = 3; 后,新建表会按新步长生成 ID,但对已存在的表无效——它的 AUTO_INCREMENT 值仍卡在建表或上次 ALTER TABLE ... AUTO_INCREMENT = N 时设定的数字上。
- 想让某张表真正按新步长开始计数,必须先清空它(或删掉重建)
- 或者手动重置:执行
ALTER TABLE table_name AUTO_INCREMENT = 100;(填你期望的下一个值) - 如果表里已有数据,MySQL 会取
MAX(id) + 1和你设的AUTO_INCREMENT值中较大的那个作为真正起点
结构同步时步长设置会被覆盖,必须关掉 AUTO_INCREMENT 同步项
Navicat 的「结构同步」功能默认会把源表的 AUTO_INCREMENT=123 这个值当成 DDL 属性强行写入目标表,哪怕你本地会话设置了步长为 5,同步后目标表依然按 123 开始递增(步长还是 1)。
- 解决方法:同步前点开「选项」→「高级」→ 取消勾选
AUTO_INCREMENT - 这个选项默认是勾选的,而且不点「高级」根本看不到,很容易漏
- 同步完记得立刻在目标库执行
SELECT MAX(id) + 1 FROM table_name;,再ALTER TABLE ... AUTO_INCREMENT = ?补上正确起点
真正难处理的不是怎么设步长,而是你设了之后,Navicat 各种自动化操作(建表、同步、导出 SQL)会悄悄绕过它,还假装一切正常。











