如何更改“id”字段的初始值?

cnjp1d6j  于 2021-06-21  发布在  Mysql
关注(0)|答案(3)|浏览(368)

我有一个 User 模型,生成以下表格:

它的id是从 1 .
我已经使用了我的系统在一个咒语,现在我想改变 id 某个用户示例的 10000 .
在我无法更改的数据库中,它将报告错误:

Cannot delete or update a parent row: a foreign key constraint fails (`qy`.`usermanage_user_groups`, CONSTRAINT `usermana_user_id_53f44f10_fk_qy_adm` FOREIGN KEY (`user_id`) REFERENCES `usermanage_user` (`id`))

有没有可能换个房间 id ? 如果有一些相关的因素,我该如何逐一解决,比如 usermanage_user_groups ?

vaqhlq81

vaqhlq811#

我有点理解您想要实现的目标,但我不确定您是否要保留表中的现有用户数据,包括user、usermanage\u user、usermanage\u user\u group;
意思是,您只是想将用户标识从[1,2,3,4,…25]替换为[10000,10001,10002,10004。。。。。。[10025]对于现有用户?
1] 如果是,那么操纵db中的表来安全地更新所有引用表中的id是一种方法。如果您共享您的模式结构/django模型,我可以在这里给出更好的解决方案。
2] 如果不是,您可以简单地将auto\u increment设置为10000,以便以下新添加的用户从10000开始+

`ALTER TABLE User AUTO_INCREMENT = 10000;`
iyr7buue

iyr7buue2#

您可以在数据库中从10000开始设置序列。也可以尝试通过db manager手动添加id为9999的用户。

sczxawaw

sczxawaw3#

这个 id 字段是django自动添加的主键字段,因为您没有提供 primary_key=True 财产。
笔记
现在,正如注解所说,您可能不必更改该字段的行为,因为它保证了整个数据的唯一性。有关详细信息,请参阅链接文档。
考虑到你现在已经明白了,我认为你有两种可能。
我认为首选的解决方案
1) 添加自定义自动域并在 10000 然后它会相应地更新。
黑客版本
2) 添加具有 id 数据库中的9999。这将导致自动增加 id 根据此新值的字段。它不会填充中间的值。

相关问题