我有一个 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
?
3条答案
按热度按时间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开始+
iyr7buue2#
您可以在数据库中从10000开始设置序列。也可以尝试通过db manager手动添加id为9999的用户。
sczxawaw3#
这个
id
字段是django自动添加的主键字段,因为您没有提供primary_key=True
财产。笔记
现在,正如注解所说,您可能不必更改该字段的行为,因为它保证了整个数据的唯一性。有关详细信息,请参阅链接文档。
考虑到你现在已经明白了,我认为你有两种可能。
我认为首选的解决方案
1) 添加自定义自动域并在
10000
然后它会相应地更新。黑客版本
2) 添加具有
id
数据库中的9999。这将导致自动增加id
根据此新值的字段。它不会填充中间的值。