Sto usando django + MySQL. A volte, inserisco dati duplicati nel mio database, il che fa sì che django sollevi un IntegrityErrror
.Django - Distingue i vari tipi di IntegrityError
Il problema è, django/python utilizzare questo stesso errore per diversi dei MySQL errors diversi. L'unico modo per distinguere tra loro è quello di guardare il codice di errore. Ad esempio,
try:
# code that raises integrity error
except IntegrityError
if e.args[0] == 1062:
raise CustomCreatedDuplicateEntryError
else:
raise e
La mia domanda è: è sicuro farlo? In tal caso, perché non è implementato a un livello inferiore? Sembra che non possa essere l'unico a desiderare un controllo più accurato su IntegrityError.
Grazie!
EDIT
Codice per alzare questo errore
class Foo(django.db.models.Model):
guid = models.CharField(max_length=32, db_index=True, unique=True)
Foo(guid=a).save()
# this raises an IntegrityError with code 1062!
Foo(guid=a).save()
È possibile pubblicare il codice che genera l'errore di integrità? –
@ScottWoodall, aggiunto :) Non sono sicuro che questo sia utile, si tratta di un errore molto comune in django (un sacco di domande su SO che chiede perché viene sollevato) – djs22
Non è il motivo per cui quei numeri di errore sono database dipendente dal motore? –