読者です 読者をやめる 読者になる 読者になる

MySQLのauto_incrementでDuplicate entryといわれたときに疑うこと

error mysql

こないだMySQLでちょっと珍しいエラー出ていたのでご紹介したいと思います。

Duplicate entry 'nnnnnnn' for key 1

発行したSQLは「id auto_increment」指定のされたテーブルに対してidを指定せず値を追加していたのですが、idを指定して追加しようとしても、idを指定せず追加しようとしても上記のエラーが出て追加できませんでした。

はじめは「INTの上限?」とも思ったのですが、7桁で発生するとも考えにくいので「select * from table where id = nnnnnnn;」と発行したところ、今度は以下のようなエラーが発生しました。

ERROR 1030 (HY000): Got error 134 from storage engine

この時点でテーブルの不整合と判断し、myisamchkを実行したところ、案の定エラーが出ていたのでMySQLをバックアップした上でいったん停止し、以下のコマンドで修復しました。

myisamchk -r /var/lib/mysql/db_name/table.MYI

原因は不明なのですが、現状正常に稼動しているため上記対応で問題なかったと思っています。