Mein Rechentrainer läuft ja schon in einer Betaversion im Internet. 184 Nutzer haben in 16 Aufgabenkategorien schon über 20 000 Aufgaben gerechnet und das scheint auch problemlos zu funktionieren. Parallel dazu habe ich lokal natürlich an Erweiterungen gearbeitet und habe die 17. Kategorie (Prozentrechnung) fertig gestellt und will die jetzt hochladen. Da ich sehr unsicher bin, ob das dann auch reibungslos funktionieren wird, habe ich jetzt einfach mal die Datenbank aus dem Internet runtergeladen und probeweise in meine lokale Installation eingefügt. Ich bekomme dann den Hinweis "You have 12 unapplied migration(s)". Wenn ich "migrate" ausführe bekomme ich eine Fehlermeldung (eine ganze Liste) und da bräuchte ich Hilfe bei der Lösung:
Code: Alles auswählen
(django_rechentrainer) PS D:\Dropbox\RechentrainerWeb\rechentrainer_024 - Kopie (4)> python manage.py migrate
Operations to perform:
Apply all migrations: accounts, admin, auth, contenttypes, core, sessions
Running migrations:
Applying core.0092_sachaufgabe_loe_weg_sachaufgabe_variable...Traceback (most recent call last):
File "D:\Dropbox\RechentrainerWeb\rechentrainer_024 - Kopie (4)\django_rechentrainer\lib\site-packages\django\db\backends\utils.py", line 89, in _execute
return self.cursor.execute(sql, params)
File "D:\Dropbox\RechentrainerWeb\rechentrainer_024 - Kopie (4)\django_rechentrainer\lib\site-packages\django\db\backends\sqlite3\base.py", line 357, in execute
return Database.Cursor.execute(self, query, params)
sqlite3.IntegrityError: CHECK constraint failed: (JSON_VALID("loesung") OR "loesung" IS NULL)
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "D:\Dropbox\RechentrainerWeb\rechentrainer_024 - Kopie (4)\manage.py", line 22, in <module>
main()
File "D:\Dropbox\RechentrainerWeb\rechentrainer_024 - Kopie (4)\manage.py", line 18, in main
execute_from_command_line(sys.argv)
File "D:\Dropbox\RechentrainerWeb\rechentrainer_024 - Kopie (4)\django_rechentrainer\lib\site-packages\django\core\management\__init__.py", line 446, in execute_from_command_line
utility.execute()
File "D:\Dropbox\RechentrainerWeb\rechentrainer_024 - Kopie (4)\django_rechentrainer\lib\site-packages\django\core\management\__init__.py", line 440, in execute
self.fetch_command(subcommand).run_from_argv(self.argv)
File "D:\Dropbox\RechentrainerWeb\rechentrainer_024 - Kopie (4)\django_rechentrainer\lib\site-packages\django\core\management\base.py", line 402, in run_from_argv
self.execute(*args, **cmd_options)
File "D:\Dropbox\RechentrainerWeb\rechentrainer_024 - Kopie (4)\django_rechentrainer\lib\site-packages\django\core\management\base.py", line 448, in execute
output = self.handle(*args, **options)
File "D:\Dropbox\RechentrainerWeb\rechentrainer_024 - Kopie (4)\django_rechentrainer\lib\site-packages\django\core\management\base.py", line 96, in wrapped
res = handle_func(*args, **kwargs)
File "D:\Dropbox\RechentrainerWeb\rechentrainer_024 - Kopie (4)\django_rechentrainer\lib\site-packages\django\core\management\commands\migrate.py", line 349, in handle
post_migrate_state = executor.migrate(
File "D:\Dropbox\RechentrainerWeb\rechentrainer_024 - Kopie (4)\django_rechentrainer\lib\site-packages\django\db\migrations\executor.py", line 135, in migrate
state = self._migrate_all_forwards(
File "D:\Dropbox\RechentrainerWeb\rechentrainer_024 - Kopie (4)\django_rechentrainer\lib\site-packages\django\db\migrations\executor.py", line 167, in _migrate_all_forwards
state = self.apply_migration(
File "D:\Dropbox\RechentrainerWeb\rechentrainer_024 - Kopie (4)\django_rechentrainer\lib\site-packages\django\db\migrations\executor.py", line 252, in apply_migration
state = migration.apply(state, schema_editor)
File "D:\Dropbox\RechentrainerWeb\rechentrainer_024 - Kopie (4)\django_rechentrainer\lib\site-packages\django\db\migrations\migration.py", line 130, in apply
operation.database_forwards(
schema_editor.add_field(
File "D:\Dropbox\RechentrainerWeb\rechentrainer_024 - Kopie (4)\django_rechentrainer\lib\site-packages\django\db\backends\sqlite3\schema.py", line 397, in add_field
self._remake_table(model, create_field=field)
File "D:\Dropbox\RechentrainerWeb\rechentrainer_024 - Kopie (4)\django_rechentrainer\lib\site-packages\django\db\backends\sqlite3\schema.py", line 333, in _remake_table
self.execute(
File "D:\Dropbox\RechentrainerWeb\rechentrainer_024 - Kopie (4)\django_rechentrainer\lib\site-packages\django\db\backends\base\schema.py", line 199, in execute
cursor.execute(sql, params)
File "D:\Dropbox\RechentrainerWeb\rechentrainer_024 - Kopie (4)\django_rechentrainer\lib\site-packages\django\db\backends\utils.py", line 103, in execute
return super().execute(sql, params)
File "D:\Dropbox\RechentrainerWeb\rechentrainer_024 - Kopie (4)\django_rechentrainer\lib\site-packages\django\db\backends\utils.py", line 67, in execute
return self._execute_with_wrappers(
File "D:\Dropbox\RechentrainerWeb\rechentrainer_024 - Kopie (4)\django_rechentrainer\lib\site-packages\django\db\backends\utils.py", line 80, in _execute_with_wrappers
return executor(sql, params, many, context)
File "D:\Dropbox\RechentrainerWeb\rechentrainer_024 - Kopie (4)\django_rechentrainer\lib\site-packages\django\db\backends\utils.py", line 84, in _execute
with self.db.wrap_database_errors:
File "D:\Dropbox\RechentrainerWeb\rechentrainer_024 - Kopie (4)\django_rechentrainer\lib\site-packages\django\db\utils.py", line 91, in __exit__
raise dj_exc_value.with_traceback(traceback) from exc_value
File "D:\Dropbox\RechentrainerWeb\rechentrainer_024 - Kopie (4)\django_rechentrainer\lib\site-packages\django\db\backends\utils.py", line 89, in _execute
return self.cursor.execute(sql, params)
File "D:\Dropbox\RechentrainerWeb\rechentrainer_024 - Kopie (4)\django_rechentrainer\lib\site-packages\django\db\backends\sqlite3\base.py", line 357, in execute
return Database.Cursor.execute(self, query, params)
django.db.utils.IntegrityError: CHECK constraint failed: (JSON_VALID("loesung") OR "loesung" IS NULL)
Code: Alles auswählen
class Protokoll(models.Model):
user = models.ForeignKey(Profil, verbose_name='Benutzer', related_name='protokolle', on_delete=models.CASCADE)
#gewertet werden nur die Aufgaben des jeweiligen Schuljabjahres, im Januar, Juni und August, kann der user aber auch schon festlegen, dass die Aufgaben für das nächste Schulhalbjahr gelten:
sj = models.SmallIntegerField(default=0)
hj = models.SmallIntegerField(default=0)
kategorie = models.ForeignKey(Kategorie, related_name='protokolle', on_delete=models.CASCADE)
titel = models.CharField(max_length=20, blank=True)
typ = models.SmallIntegerField(default=0)
typ2 = models.SmallIntegerField(default=0)
aufgnr = models.PositiveSmallIntegerField(default=0)
#der Aufgabentext:
text = models.TextField(blank=True)
pro_text = models.CharField(max_length=100, blank=True)
variable = models.JSONField()
frage = models.CharField(max_length=20, blank=True)
einheit = models.CharField(max_length=20, blank=True)
anmerkung = models.CharField(max_length=100, blank=True)
parameter = models.JSONField()
#hier speichere ich die Lösung, wahlweise als zahl, u.U. auch (mehrere) Lösungen als String:
wert = models.DecimalField('Wert', null=True, max_digits=20, decimal_places=7)
loesung = models.JSONField() #hier können mehrere Werte eingegeben werden, der erste wird angezeigt wenn "Lösung anzeigen" angeklickt wird. Steht hier auch "indiv" so wird die Eingabe in der jeweiligen Funktion überprüft
...
Code: Alles auswählen
['4000/100*4.5/360*90', 45.0, 'indiv_1']
Könnt ihr mir mithilfe dieser Angaben sagen, wo ich den Fehler finde und wie ich ihn behebe?