2016-05-14 7 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

 Смежные вопросы

  • Нет связанных вопросов^_^