Django PostgreSQL JSONField db_index错误

时间:2016-10-21 21:25:40

标签: django postgresql jsonb

我的模特:

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

我该如何解决?

1 个答案:

答案 0 :(得分:3)

this answer可以看出,这是b树索引的限制。没有简单的解决方案。索引整个JSONField也没有任何意义。您出于什么原因首先尝试索引JSONField?

我的建议是删除此索引,因为我怀疑它是必需的。您可能希望尝试更复杂的索引,但内置db_index的Django不具备此功能。您必须根据自己的情况创建更加自定义的方法。