我的模特:
from django.db import models
from django.contrib.postgres.fields import JSONField
class MyModel(models.Model):
data = JSONField(blank=True, null=True)
我创建了一些对象并填充了#34;数据"包含一些JSON的字段
然后我尝试为"数据"创建索引。字段
class MyModel(models.Model):
data = JSONField(blank=True, null=True, db_index=True)
进行迁移
python manage.py makemigrations
迁移
python manage.py migrate
长回溯,最后一行是:
django.db.utils.OperationalError: index row requires 8336 bytes, maximum size is 8191
我该如何解决?
答案 0 :(得分:3)
从this answer可以看出,这是b树索引的限制。没有简单的解决方案。索引整个JSONField也没有任何意义。您出于什么原因首先尝试索引JSONField?
我的建议是删除此索引,因为我怀疑它是必需的。您可能希望尝试更复杂的索引,但内置db_index
的Django不具备此功能。您必须根据自己的情况创建更加自定义的方法。