PHPにて、CSVファイルを fgetcsvで読み込んで、データベースに保存しようとした際に以下のエラーが出ました。
1062:Duplicate entry…..
データが重複してはいけないフィールドで、既に存在しているデータを保存しようとすると出るエラーなので、ちょくちょく出くわすんですが、今まで気づいていなかったことがあったのでメモしておきます。
ということで、1062エラーはどうでもよくて・・・、話題は「AUTO_INCREMENT」のことだったりします。
【いまさら気づいたこと】
- AUTO_INCREMENTを設定したカラムって、0からではなく、1から番号が振られるんですね。
- AUTO_INCREMENTを設定したカラムって、重複した値を格納できるんですね。(UNIQUE設定してたらダメですが)
ついでにAUTO_INCREMENTについての参考ページ;
AUTO_INCREMENTの設定 – テーブルの作成 – MySQLの使い方
- AUTO_INCREMENTを設定するカラムには同時にインデックスを設定する必要がある
- AUTO_INCREMENTはテーブル内の1つのカラムにしか設定できない
- AUTO_INCREMENTを設定したカラムにはDEFAULTは設定できない
- AUTO_INCREMENTには正の値しか格納できない(負の数も可能だが予期しない結果となる)