私はすべての列がnullでないと定義されているmysqlテーブルに挿入するために、hibernateを使用しています。ユニークな主キーと複数の列にユニークな索引があります。org.springframework.dao.DataIntegrityViolationException誤った報告の原因ですか?
私は次のエラーを取得しています:
org.springframework.dao.DataIntegrityViolationException: Could not execute JDBC batch update; SQL [insert into MY_TABLE(col1, col2, col3, col4, ID_) values (?, ?, ?, ?, ?)]; constraint [null]
このエラーは、顧客のログにあると私は問題を自分で再現することはできませんので、私は値がでているものを見るために、デバッグ中に置くことができませんinsertステートメント
「constraint [null]」は、「not null」制約が違反されていることを意味します。しかし、私のコードを見ると、hibernateがヌルIDを挿入しようとしていない限り、挿入時にデータがヌルになる可能性のある方法を見ることができません(これは、休止状態では非常に悪いバグでしょう。ありそうもない)。
しかし、ユニークな制約が違反している可能性があります。メッセージが誤解を招く可能性がありますか?実際には、固有のキー違反が発生していますか? "constraint [null]"は常にnullでない制約が違反したことを意味しますか?
私は 'null'なのでないカラムが' null'なので価値を与えるしようとされていない限り、その例外が発生した理由を推測することができないなどのDB名が付いています。ところで、古いバージョンのJDBCドライバを使用している場合は、最新のもの(10 +)で置き換えることを忘れないでください。それ以外の場合は、後で他の問題が発生します。 – Lion
これはOracleではなく、mysql 5.1です。 – Dana