mysql - Django - 通过处理OperationalError从MySQL触发器获取错误消息

标签 mysql django operationalerror

我在 MySQL 中有一个带有触发器的表,用于验证数据,并在出现关键值时发出错误消息。

这是触发代码:

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 - Django - 通过处理OperationalError从MySQL触发器获取错误消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37232456/

相关文章:

php - GROUP BY 与事件记录?

php - 如何打开浏览器在 CakePHP 中使用 DBUnit 进行测试?

python - 需要对 Django REST Framework 中的序列化程序的 `Including extra context` 进行说明

python - 训练聊天机器人时,chatterbot python3 OperatingalError : no such column: statement. 对话

mysql - 在另一个 Select 中选择 Case

php - 在数据库中保留 1 周数据

python - process_request出错时django中间件的执行顺序是怎样的?

javascript - Django HTML 和 CSS 呈现为 pdf

python - 操作错误 - 没有这样的表 - Django,mptt

python - Flask - SQLAlchemy 操作错误