Когда мы выпустили последнюю пятницу, я получил сообщение об ошибке, которое я не получаю при принятии. Сообщение об ошибке:NHibernate IStatelessSession Ошибка CreateQuery
could not execute update query[SQL: delete from dbo.MyTable where col1=? and col2=? and col3=? and col4=? and col5=?]
Мой C# код выглядит следующим образом:
var hqlDelete = "DELETE MyTable m WHERE m.Col1 = :var_1 AND m.Col2 = :var_2 AND m.Col3= :var_3 AND m.Col4 = :var_4 AND m.Col5= :var_5";
var deletedEntities = session.CreateQuery(hqlDelete)
.SetString("var_1", variable1)
.SetString("var_2", variable2)
.SetString("var_3", variable3)
.SetString("var_4", variable4)
.SetString("var_5", variable5)
.ExecuteUpdate();
transaction.Commit();
session.Close();
Теперь, как я сказал, ошибка не срабатывает, когда тестирование на прием. Кроме того, когда я тестирую базу данных производства (код с моего сайта разработчика), она работает без проблем.
Код запускается при вызове веб-службы и POST «измерение». Единственное различие заключается в том, что я звоню в службу при тестировании, а на производстве другая компания отправляет измерения в веб-службу.
Я думаю, что это может иметь какое-то отношение к количеству сеансов/транзакций, но на самом деле это не объясняет, почему переменные отображаются в сообщении об ошибке как ?
.
Любые идеи? Есть ли больше информации, которую я мог бы предоставить, чтобы вы могли помочь мне с этим?
Edit: InnerExeption является
{"Transaction (Process ID 68) was deadlocked on lock | communication buffer resources with another process and has been chosen as the deadlock victim. Rerun the transaction."}
Во-первых, показать полный стек исключений .. эта часть выше будет только началом ... реальная и интересная информация будет следовать ... –
Как указано Radim, ваше сообщение об ошибке недостаточно. Он просто говорит, чего он не может сделать. Обычно это дает некоторые причины. Сведения о журнале исключения, включая его 'InnerException'. Если у вас их больше нет, добавьте log4net, настройте его для регистрации как минимум предупреждений и выше, и NHibernate затем опубликует подробные журналы об ошибке. –
Хорошо спасибо. Я надеялся, что это была какая-то типичная ошибка или что-то в этом роде. Это отчасти трудно отлаживать, так как я должен следовать плану выпуска (я могу выпустить раз в месяц) и, следовательно, только тест на прием. Поэтому, даже если я добавлю log4net, мне придется подождать месяц, прежде чем я смогу понять, что такое ошибки. – Tjab