You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Django模型主键ID自增起始值修改:如何从186开始新增数据?

如何让Django自增主键从186开始续增

问题根源是手动导入数据后,数据库维护的自增计数器没同步到当前最大ID(185),导致Django新增数据时仍从1开始尝试,触发主键冲突。Django的AutoField本身不支持initial参数,自增逻辑完全由数据库控制,所以得直接调整数据库的自增序列值。

下面分数据库类型给出具体操作:

1. 直接执行数据库命令

  • MySQL/MariaDB:
    登录数据库后执行:

    ALTER TABLE 你的表名 AUTO_INCREMENT = 186;
    

    替换你的表名为实际数据表名称(Django默认表名是应用名_模型类名小写)。

  • PostgreSQL:
    先确认自增序列名称(一般是表名_id_seq),不确定的话执行:

    SELECT pg_get_serial_sequence('你的表名', 'id');
    

    得到序列名后,执行:

    SELECT setval('你的表名_id_seq', 186);
    
  • SQLite:
    SQLite通过SQLITE_SEQUENCE表记录自增序列值,执行:

    UPDATE SQLITE_SEQUENCE SET seq = 185 WHERE name = '你的表名';
    

    设为185是因为SQLite下一次自增会取seq+1,刚好得到186。

2. 通过Django Shell执行

不想直接操作数据库的话,也可以用Django Shell执行命令:

  1. 进入项目根目录,运行:
    python manage.py shell
    
  2. 在Shell中执行对应数据库的命令(以MySQL为例):
    from django.db import connection
    with connection.cursor() as cursor:
        cursor.execute("ALTER TABLE 你的表名 AUTO_INCREMENT = 186;")
    
    其他数据库替换成对应的SQL语句即可。

注意事项

  • 操作前务必备份数据库,避免误操作导致数据丢失
  • 确认表名和序列名拼写正确,Django默认表名格式是应用名_模型类名小写
  • 调整后,数据库会自动从186开始递增,无需修改Django模型

内容的提问来源于stack exchange,提问作者jose

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.01 07:41:29