問題
12桁の数字を使用するPRIMARY KEYを使用している。
PRIMARY KEYがDBに登録されている状態で、似たようなPRIMARY KEYでREPLACEを行うと、異なるKEYにも関わらずDuplicateエラーが発生する。
例:
DBにあるPRIMARY KEY:195920220930
登録しようとしているPRIMARY KEY:195920220931
raise errorclass(errno, errval)
pymysql.err.IntegrityError: (1062, "Duplicate entry '195' for key 'PRIMARY'")
原因
不明。
ただ、エラーの内容から推察すると、先頭数文字だけで一致有無を調べているため、全体チェックがされずに重複と判断されていると考えられる。
先頭3文字が一致しているかを確認しているように見える。
対策
CHAR で固定長の文字列にするか、INT などの数字に型を変更する。
私は、CHAR にすることで対処できました。
コメント