2016-05-14 42 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此错误信息,并显示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而不是OperationalError(这是DatabaseError一个子类)。

+0

它现在可以工作,但这一次的问题是由于某种原因,消息只是一个空字符串。 –

+0

尝试打印'e.args'以查看异常对象提供了哪些参数。其中一个将希望包含从MySQL传递的消息文本。 – solarissmoke