2016-05-14 5 views
0

私は、データを検証し、重要な値の場合はエラーメッセージを出すトリガーを使ってMySQLにテーブルを持っています。ここでDjangoは、MySQLトリガーからのエラーメッセージを処理することによって処理します。OperationalError

は、トリガコードです:今

CREATE TRIGGER `supermarkets_schema`.`legal_entities_BEFORE_INSERT` 
BEFORE INSERT ON `supermarkets_schema`.`legal_entities` 
FOR EACH ROW 
BEGIN 
    DECLARE parent_inn, parent_ogrn, parent_temp_leg_address VARCHAR(300); 

    IF some_condition THEN 
     SIGNAL sqlstate '45001' set message_text = 'My error msg' 
END 

、私はジャンゴでこのエラーメッセージを取得し、Djangoのテンプレートページ上に表示します。

import django.db 

try: 
    legal_entities_details_instance.legal_entities = legal_entities_form.save() 
except OperationalError as e: 
    return render_to_response("error_handling/main.html", {"message": e.message}) 

しかし残念ながら、私は、Djangoはそれを正しく処理するために作ることができない。

は、ここで私がやろうものです。 OperationalErrorの誤ったパッケージをインポートするために起こりますか?私を助けてください!

答えて

1

あなたはあなたのコードで使用する前にOperationalErrorをインポートしていない:

from django.db import OperationalError 

あなたが実際に(DatabaseErrorのサブクラスである)DatabaseErrorの代わりOperationalErrorをキャッチすることができます。

+0

今のところ問題は、何らかの理由でメッセージが空の文字列になってしまうことです。 –

+0

'e.args'を印刷して、例外オブジェクトでどの引数が指定されているのかを確認してください。そのうちの1人は、MySQLから渡されたメッセージテキストを含むことを願っています。 – solarissmoke

関連する問題