Запись в переменную результата Mysql запроса

vlsdrmy

Client
Регистрация
20.12.2015
Сообщения
25
Благодарностей
1
Баллы
3
Скажите, можно ли как то записать в переменную ответ, который возвращает сбойное действие, в котором выполняется MySQL запрос?
Если подробнее: я выполняю INSERT в MySQL базу, но иногда запрос выполняется с ошибкой добавления записи. Причина ошибки - добавление дубликата записи. Ошибка выводится в лог такая:
"Сообщение: "Duplicate entry '4000001' for key 'PRIMARY'"
Мне нужно как то вывести эту ошибку в переменную, что бы затем сравнить ее на определенное соответствие. Поскольку если ошибка именно такая (дубликат записи), то можно просто перейти к следующему действию, иначе же если ошибка INSERTA-а в базу другая - то остановить выполнение шаблона.
 

arhip1985

Client
Регистрация
31.10.2011
Сообщения
2 955
Благодарностей
781
Баллы
113
может помочь, попробуйте:
Код:
var error = project.GetLastError();
var tmp = "";
if(error != null)
    tmp = string.Format("ActionComment: {0}", error.ActionComment);
return tmp;
хотя коммент это наверно не месседж, не проверял
 

arhip1985

Client
Регистрация
31.10.2011
Сообщения
2 955
Благодарностей
781
Баллы
113
в справке написано:
ActionComment - Gets a comment of action with an error

если нет, то может в Exception хранится месседж
скорее всего вот так работать будет:

Код:
var error = project.GetLastError();
var tmp = "";
if(error != null)
    tmp = error.Exception.Message;
return tmp;
а потом сравниваете с вашим списком ошибок
 
Последнее редактирование:
  • Спасибо
Реакции: ZSharp и vlsdrmy

vlsdrmy

Client
Регистрация
20.12.2015
Сообщения
25
Благодарностей
1
Баллы
3
Большое спасибо arhip1985, вариант с error.Exception.Message работает.
 

BAZAg

Client
Регистрация
08.11.2015
Сообщения
1 760
Благодарностей
2 398
Баллы
113
Хм... Допишите в запросе ON DUPLICATE KEY UPDATE name=VALUES(name), fname=VALUES(fname) - и данная проблема пропадет без лишних приморочек.
 
  • Спасибо
Реакции: vlsdrmy

Кто просматривает тему: (Всего: 1, Пользователи: 0, Гости: 1)