2016-10-21 4 views
0

Mein Modell:Django PostgreSQL JSONField db_index Fehler

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

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

ich einige Objekte erstellt haben, und "Daten" Feld mit einigen JSONs gefüllt

Dann habe ich versucht Index erstellen für "Daten" -Feld

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

Make-Migrationen

python manage.py makemigrations 

Migrate

python manage.py migrate 

Lange Zurückverfolgungs und letzte Zeile ist:

django.db.utils.OperationalError: index row requires 8336 bytes, maximum size is 8191 

Wie kann ich es beheben?

Antwort

2

Wie Sie aus this answer sehen können, ist dies eine Einschränkung des B-Tree-Index. Es gibt keine einfache Lösung dafür. Das Indizieren eines gesamten JSONFields ergibt ebenfalls keinen Sinn. Aus welchem ​​Grund versuchen Sie das JSONField an erster Stelle zu indexieren?

Meine Empfehlung wäre, diesen Index zu entfernen, da ich bezweifle, dass es erforderlich ist. Vielleicht möchten Sie einen komplexeren Index ausprobieren, aber Djangos eingebauter db_index ist dazu nicht in der Lage. Sie müssten einen individuelleren Ansatz basierend auf Ihrer Situation erstellen.

+0

Big Thx für Informationen. Ich wollte nur einen Leistungstest machen. – MaxCore

Verwandte Themen