我有一个导入脚本,它运行一系列命令将东西从一个Postgres数据库复制到另一个数据库,两个数据库都运行相同的Django代码库。大部分情况下,它使用./manage.py loaddata进行复制,但是一些对象需要额外处理,我使用Django的objects.create()方法在自定义脚本中复制数据。在执行此操作时,我会指定ID,例如:
MyObject.objects.create(id = 2, title = 'foo')
一旦脚本完成,我注意到在执行objects.create()时Postgres SEQUENCE在表格上出现错误。即,导入前它是50,在导入后仍是50,即使该表现在有150个对象。当创建新对象时,这会导致错误,因为它尝试使用已经存在的ID(在所有这些表上,ID只是一个普通的自动递增字段)。然而,通过./manage.py loaddata填充的表格似乎没问题。
我知道可以使用Django的./manage.py sqlsequenreset手动重置这些表格,但我想知道为什么序列似乎首先出现了问题。objects.create()没有增加它吗?我是否忽略了一些显而易见的东西?