Django - 通过处理 OperationalError 从 MySQL 触发器中获取错误消息
Django - grabbing error message from MySQL trigger via handling OperationalError
我在 MySQL 中有一个 table,带有一个触发器,用于验证数据,如果临界值会发出错误消息信号。
触发代码如下:
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 导入了不正确的包而发生?请帮助我!!!
在您的代码中使用之前,您尚未导入 OperationalError
:
from django.db import OperationalError
您可能实际上想要捕获 DatabaseError
而不是 OperationalError
(它是 DatabaseError
的子类)。
我在 MySQL 中有一个 table,带有一个触发器,用于验证数据,如果临界值会发出错误消息信号。
触发代码如下:
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 导入了不正确的包而发生?请帮助我!!!
在您的代码中使用之前,您尚未导入 OperationalError
:
from django.db import OperationalError
您可能实际上想要捕获 DatabaseError
而不是 OperationalError
(它是 DatabaseError
的子类)。