cob*_*ysh 4 django postgresql django-orm
我正在运行一个每天创建数百万条记录的程序,运行该程序一年多后,似乎我已经达到了 postgres 数据库的 id 限制。
我收到的错误是
django.db.utils.DataError:nextval:达到序列“main_records_id_seq”的最大值(2147483647)
有没有办法使用 SQL 或 django ORM 来扩展最大 id?或者有更好的解决方案吗?
Django 默认使用AutoField[Django-doc]来指定数据库端主键的值。AnAutoField是一个IntegerField[Django-doc],正如 Django 文档所述:
一个整数。从
-2147483648到 的2147483647值在 Django 支持的所有数据库中都是安全的。
BigAutoField您可以使用[Django-doc]来代替,它将使用:
64 位整数,与 an 非常相似,
AutoField不同之处在于它保证适合从1到 的9223372036854775807数字。
如果您的应用程序一年内生成 2'147'483'647,则您可以使用BigAutoField4'294'967'298 年。
因此,您可以将模型定义为:
class MyModel(models.Model):
id = models.BigAutoField(primary_key=True)Run Code Online (Sandbox Code Playgroud)
这仅与 PostgreSql 相关,与 Django ORM 无关。不幸的是,解决方案并不简单,这是一篇很好的文章,介绍了 DB id 迁移的 4 种策略,并各有优缺点。
策略总结:
| 归档时间: |
|
| 查看次数: |
516 次 |
| 最近记录: |