Ich verwende Hibernate, um in eine MySQL-Tabelle einzufügen, in der alle Spalten als nicht null definiert sind. Es hat einen eindeutigen Primärschlüssel und einen anderen eindeutigen Index für mehrere Spalten.org.springframework.dao.DataIntegrityViolationException falsche bericht Ursache?
Ich erhalte die folgende Fehlermeldung:
org.springframework.dao.DataIntegrityViolationException: Could not execute JDBC batch update; SQL [insert into MY_TABLE(col1, col2, col3, col4, ID_) values (?, ?, ?, ?, ?)]; constraint [null]
Dieser Fehler in der Kundenprotokolle und ich kann das Problem nicht selbst reproduzieren, so kann ich bei der Fehlersuche, um zu sehen, was die Werte nicht gesetzt sind in die Insert-Anweisung.
Mein Verständnis ist, dass "Constraint [null]" bedeutet, dass eine "nicht null" Einschränkung verletzt wird. Wenn ich jedoch meinen Code betrachte, kann ich keine Möglichkeit erkennen, dass irgendwelche Daten zum Zeitpunkt des Einfügens null sein könnten, es sei denn, Hibernate versucht, eine Null-ID einzufügen (was ein sehr schlechter Fehler im Hibernate wäre) unwahrscheinlich).
Ich kann jedoch sehen, wie es passieren kann, dass eine eindeutige Einschränkung verletzt wird. Ist es möglich, dass die Nachricht irreführend ist und ich tatsächlich eine eindeutige Schlüsselverletzung erhalte? Bedeutet "constraint [null]" immer, dass eine Nicht-Null-Bedingung verletzt wurde?
Ich kann nicht erraten, warum diese Ausnahme verursacht wird, es sei denn, ein 'nicht null' Spalte einen' null' Wert zu geben versucht. Übrigens, wenn Sie eine ältere Version des JDBC-Treibers verwenden, dann vergessen Sie nicht, sie durch die neueste Version (10+) zu ersetzen. Andernfalls werden später auch andere Probleme verursacht. – Lion
Dies ist MySQL 5.1, nicht Oracle. – Dana