美文网首页
Django 重复键违反唯一约束

Django 重复键违反唯一约束

作者: alue | 来源:发表于2023-11-12 11:21 被阅读0次

上一篇文章 中,介绍了数据库 sequence 出现紊乱时的处理方法。

今天才发现,原来 Django 已经提供了这个辅助工具 -- sqlsequencereset. 官网是这样介绍的:

django-admin sqlsequencereset app_label [app_label ...]
Prints the SQL statements for resetting sequences for the given app name(s).
Sequences are indexes used by some database engines to track the next available number for automatically incremented fields.
Use this command to generate SQL which will fix cases where a sequence is out of sync with its automatically incremented field data.

也就是说,只要执行 sqlsequencereset app_label , 就能生成我们需要的重置序列的SQL指令。

例如

sqlsequencereset auth

会生成

BEGIN;
SELECT setval(pg_get_serial_sequence('"auth_permission"','id'), coalesce(max("id"), 1), max("id") IS NOT null) FROM "auth_permission";
SELECT setval(pg_get_serial_sequence('"auth_group_permissions"','id'), coalesce(max("id"), 1), max("id") IS NOT null) FROM "auth_group_permissions";
SELECT setval(pg_get_serial_sequence('"auth_group"','id'), coalesce(max("id"), 1), max("id") IS NOT null) FROM "auth_group";
SELECT setval(pg_get_serial_sequence('"auth_user_groups"','id'), coalesce(max("id"), 1), max("id") IS NOT null) FROM "auth_user_groups";
SELECT setval(pg_get_serial_sequence('"auth_user_user_permissions"','id'), coalesce(max("id"), 1), max("id") IS NOT null) FROM "auth_user_user_permissions";
SELECT setval(pg_get_serial_sequence('"auth_user"','id'), coalesce(max("id"), 1), max("id") IS NOT null) FROM "auth_user";
COMMIT;

然后在数据库管理工具中,复制上述指令,就能重置序列了。

相关文章

  • 【转】Oracle 错误总结及问题解决 ORA(1)

    ORA-00001: 违反唯一约束条件 (.)错误说明:当在唯一索引所对应的列上键入重复值时,会触发此异常。 OR...

  • oracle错误集合

    ORA-00001: 违反唯一约束条件 (.) 错误说明:当在唯一索引所对应的列上键入重复值时,会触发此异常。 O...

  • MySQL多表操作

    外键约束 唯一约束和主键约束 唯一约束:列表内容必须唯一,但是可以为空 unique不能作为其它表的外键可以有多...

  • [外键约束问题]django.db.utils.Integrit

    [外键约束问题]django.db.utils.IntegrityError: (1215, 'Cannot ad...

  • Oracle 数据库表中已有重复数据添加唯一键(唯一约束)

    数据库表中已有重复数据添加唯一键(唯一约束) 问题描述 以 demo 举例,模拟真实场景。 表 TEST_TABL...

  • SQL-完整性约束-2018.07.13

    完整性约束 数据类型完整性 非空约束 唯一键 主键约束 外键约束 默认值约束 标识列8 检查约束(CHECK)

  • 数据库约束

    约束类型 非空约束 not null 唯一性约束 unique 主键约束 primary key 外键约束 for...

  • 数据表修改

    添加单列 添加多列 删除列 添加主键约束 添加唯一约束 添加外键约束 添加/删除默认约束 删除主键约束 删除唯一约...

  • django模型中关联关系查询

    写的很乱,写的时候思路不够清晰 django中模型多对多关系 ForeignKey外键约束,在django中是表示...

  • sql学习笔记3-约束

    主键约束(联合主键约束) 唯一性约束 非空约束 默认值约束 外键约束 1、主键约束 它能够唯一确定一张表中的一条记...

网友评论

      本文标题:Django 重复键违反唯一约束

      本文链接:https://www.haomeiwen.com/subject/fxolwdtx.html