我正在运行一个程序,该程序每天创建数百万条记录,运行该程序一年后,看来我已经达到了我的postgres数据库的id限制。
我收到的错误是
django.db.utils.DataError:nextval:达到序列“ main_records_id_seq”的最大值(2147483647)
是否有使用SQL或django ORM扩展最大id的方法?还是有更好的解决方案?
这仅与PostgreSql有关,与Django ORM无关。不幸的是,该解决方案并不简单,this是一篇不错的文章,介绍了四种DB ID迁移策略,各有利弊。
策略摘要:
Django默认使用AutoField
[Django-doc]来指定数据库端主键的值。 AutoField
是AutoField
,正如Django文档所述:
整数。值从
IntegerField
[Django-doc]到IntegerField
在Django支持的所有数据库中都是安全的。
您可以使用的是-2147483648
,它将使用:
一个64位整数,非常类似于
2147483647
,不同之处在于,它保证可以容纳BigAutoField
[Django-doc]至BigAutoField
的数字。
如果您的应用程序在一年内生成2'147'483'647,则可以在4'294'967'298年内使用AutoField
。
因此,您可以将模型定义为:
1