MariaDBでPRIMARY KEYにVARCHARを使うとDuplicateする問題

問題

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 にすることで対処できました。

コメント

タイトルとURLをコピーしました