2016-11-12 2 views
1

Ich versuche, meine Django-App mit einer MySQL-Datenbank zu verbinden. Ich habe die Datenbank erstellt und versucht, die App mit python manage.py migrate zu migrieren. An dieser Stelle bekomme ich folgende Fehlermeldung:Django-App kann nicht migriert werden - MySQL wirft einen OperationalError "Zu große Skalierung angegeben"

django.db.utils.OperationalError: (1425, "Too big scale 100 specified for column 'score'. Maximum is 30.") 

ich das Objekt in models.py geprüft. Es sieht wie folgt aus:

class Para(models.Model): 
    ... 
    text = models.CharField(max_length=20000) 
    score = models.DecimalField(max_digits=100, decimal_places=5) 

    def __unicode__(self): 
     return self.text[:20] 

So änderte ich den max_digits bis 20, lief makemigrations und versuchte es erneut zu migrieren. Aber ich bekomme immer denselben Fehler. Ich bin neu in MySQL und nicht sicher, was ich falsch mache.

Jede Hilfe sehr geschätzt. Vielen Dank!

Antwort

0

dass Wechsel zu

score = models.DecimalField(max_digits=20, decimal_places=5) 

um weitere makemigrations Gefolgt wird nicht funktionieren (wie Sie bereits herausgefunden haben), weil die vorherige Migration ist, was Ihr Server auf erstickt. Die einfachste Lösung: Löschen Sie die zwei letzten Migrationen (vorausgesetzt, Sie haben keine weiteren Änderungen vorgenommen). Führen Sie dann

./manage.py makemigrations 
./manage.py migrate 
+0

Danke, das war es. Es wirft jetzt einen weiteren Fehler auf - "'Zeilengröße zu groß. Die maximale Zeilengröße für den verwendeten Tabellentyp, BLOBs nicht mitgerechnet, ist 65535. Dies beinhaltet Speicheraufwand, überprüfen Sie das Handbuch. Sie müssen einige Spalten in TEXT oder BLOBs ändern' "Aber der Erste ist weg! – aaravam

+0

mit Feldern wie 'text = models.CharField (max_length = 20000)' ist es ziemlich wahrscheinlich, dass Sie die maximale Zeilengröße erschöpfen werden. Bitte posten Sie eine weitere Frage mit Ihrem vollständigen Modell. – e4c5

Verwandte Themen