私はdjango + MySQLを使用しています。ときには、データベースに重複データを挿入すると、djangoがIntegrityErrror
を呼び出すことがあります。Django - 異なる種類のIntegrityErrorを区別する
問題は、django/pythonは、同じエラーのいくつかを別のMySQL errorsで使用していることです。それらを区別する唯一の方法は、エラーコードを調べることです。たとえば、
try:
# code that raises integrity error
except IntegrityError
if e.args[0] == 1062:
raise CustomCreatedDuplicateEntryError
else:
raise e
私の質問です:これは安全ですか?もしそうなら、これはなぜ低レベルで実装されていないのですか? IntegrityErrorよりもきめ細かな制御を望む唯一の人にはなり得ないようです。
ありがとうございます!
EDIT
コードこのエラーに
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()
整合性エラーを引き起こしているコードを投稿できますか? –
@ScottWoodall、追加されました:これは役立つかどうかは分かりませんが、それはジャンゴの非常に一般的なエラーです(なぜそれが発生するのか質問しているのでたくさん質問します) – djs22
そのエラー番号はデータベースエンジン依存? –