2016-10-21 8 views
0

マイモデル:ジャンゴPostgreSQLのJSONField db_indexエラー

from django.db import models 
from django.contrib.postgres.fields import JSONField 

class MyModel(models.Model): 
    data = JSONField(blank=True, null=True) 

私はその後、私は、「データ」フィールドに

をインデックスを作成しようとしたいくつかのオブジェクトを作成し、いくつかのJSONs

と「データ」フィールドを埋めてきました

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 

私はそれを解決することができますか?

答えて

2

this answerからわかるように、これはb-treeインデックスの制限です。これには単純な解決策はありません。 JSONField全体のインデックス作成も実際には意味がありません。どのような理由で、まずJSONFieldのインデックスを作成しようとしていますか?

私はこのインデックスを削除することをお勧めします。より複雑なインデックスを試してみたいかもしれませんが、Djangoはdb_indexに組み込まれています。これはできません。あなたの状況に基づいてよりカスタムのアプローチを作成する必要があります。

+0

情報のための大きなthx。 私はパフォーマンステストをしたかっただけです。 – MaxCore