PRIMARY制約に引っかかったのにINSERT出来てしまった話(未解決)
ーーーPRIMARY KEYに引っかかったけど、INSERTできてしまったーーー
そんなこと起こるわけないと誰もが思うだろうし、実際に起こってはいけない。
しかし、何故か起こってしまった。しかも、登録されていないデータに対して制約が発生し、更にNULL値で引っかかっているわけでもなかった。
Googleに聞きまくったけど「そんなことありえない」以外の回答が見つからなかったので、原因はこれかなー?ぐらいの曖昧な状態だけれども残しておく。
« 経緯 »
DBにデータをINSERTしたら、PRIMARY KEY制約に違反しますという内容のエラーが出まくった。全件分出た。
しかし、INSERT実行前に対象データが存在しないことを確認しているため、制約違反が起こるわけがない。先に書いたようにググッても何も出てこない。しかも引っかかった値がNULLなら手掛かりはあるが、色々確認しても制約違反になりそうなところ(スペースやNULL制約)は一切ない。
そして、INSERTされるはずのないデータが全て正常に登録されている。これが一番の問題であった。
この現象は起きる日と起きない日があり、エラーが起きたとしても正常に動作してる(既に登録されているデータに対してINSERTをかけるとちゃんと弾いてくれていた)のでエラー文に恐怖する以外は何の実害もなかった。
« とりあえずの結論 »
キーボードの配列をUS配列にすると起きるので、JIS配列を使用する。
これだけ。
因果関係が全く分からないが、JIS配列を徹底したら制約違反が出なくなった。関係性が分からないので、まだ未解決とさせていただきたく.....。