Używam django + MySQL. Czasami wstawiam duplikaty danych do mojej bazy danych, co powoduje, że django podnosi IntegrityErrror
.Django - Rozróżniaj różne typy IntegrityError
Problem polega na tym, że django/python używa tego samego błędu dla kilku różnych MySQL errors. Jedynym sposobem na rozróżnienie między nimi jest spojrzenie na kod błędu. Na przykład:
try:
# code that raises integrity error
except IntegrityError
if e.args[0] == 1062:
raise CustomCreatedDuplicateEntryError
else:
raise e
Moje pytanie brzmi: czy można to zrobić bezpiecznie? Jeśli tak, dlaczego nie jest to realizowane na niższym poziomie? Wygląda na to, że nie mogę być jedynym, który chce bardziej precyzyjnej kontroli nad IntegrityError.
Dzięki!
EDIT
Kod podnieść ten błąd
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()
Czy możesz opublikować kod, który powoduje błąd integralności? –
@ScottWoodall, dodano :) Nie jestem pewien, czy to będzie pomocne, jest to bardzo powszechny błąd w django (mnóstwo pytań na SO z pytaniem, dlaczego jest podnoszone) – djs22
Nie jest to powód, dla którego te numery błędów są silnik zależny od bazy danych? –