Als wir letzten Freitag veröffentlicht, erhielt ich einen Fehler, den ich nicht auf Akzeptanz bekommt. Die Fehlermeldung lautet:NHibernate IStatelessSession Create Ausfall
could not execute update query[SQL: delete from dbo.MyTable where col1=? and col2=? and col3=? and col4=? and col5=?]
Mein C# -Code ist wie folgt:
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();
Nun, wie gesagt, der Fehler auslösen nicht, wenn sie auf Akzeptanz zu testen. Auch wenn ich mit der Produktionsdatenbank (Code von meinem Entwickler-Sitz) teste, funktioniert es auch ohne Probleme.
Der Code wird ausgelöst, wenn ich einen Web-Service und POST rufen eine „Messung“, um es. Der einzige Unterschied ist, dass ich den Dienst beim Testen anrufe, und bei der Produktion sendet ein anderes Unternehmen Messungen an den Web-Service.
Ich denke, es könnte etwas mit der Anzahl der Sitzungen/Transaktionen zu tun haben, aber das würde nicht wirklich erklären, warum die Variablen als ?
in der Fehlermeldung angezeigt werden.
Irgendwelche Ideen? Gibt es mehr Informationen, die ich liefern könnte, damit Sie mir dabei helfen können?
Edit: InnerExeption ist
{"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."}
Erstens, zeigen Sie volle Ausnahme Stack .. dieser Teil oben wäre nur ein Anfang ... die echten und interessanten Informationen werden folgen ... –
Wie von Radim, Ihre Fehlermeldung ist unzureichend. Es sagt nur, was es nicht kann. Normalerweise gibt es einige Gründe. Protokollieren Sie Details der Ausnahme, einschließlich ihrer InnerException. Wenn Sie nicht mehr haben, fügen Sie log4net hinzu, konfigurieren Sie es für die Protokollierung von mindestens Warnungen und höher, und NHibernate sollte dann detaillierte Protokolle über den Fehler ausgeben. –
Ok danke. Ich hatte gehofft, das war ein typischer Fehler oder so. Es ist ein bisschen schwer zu debuggen, da ich einen Release-Plan einhalten muss (ich kann einmal im Monat veröffentlichen) und teste daher nur auf Akzeptanz. Also selbst wenn ich log4net hinzufüge, muss ich einen Monat warten, bevor ich sehen kann, was die Fehler sind. – Tjab