insert ignore 〜の問題
insert ignore 〜 の構文でインサートしたときには重複行がある場合にはインサートを実行しないのだがちょっと問題点が。。
プライマリキー(たとえば id) をauto_increment で設定していて かつ それ以外のカラムにUNIQUE KEYを設定している場合に問題があるよう。 insert ignore 〜でインサートが実行されないときにもauto_incrementが実行されるのでプライマリキーにギャップ(空番)が出てしまい、現状存在するプライマリキーの番号とシーケンスの番号の差異が一定以上(たしか10000)になるとエラーになってしまう。
これはmysql5.1.22 のinnoDBの仕様らしく設定を変えるしかないので断念。。
バルクインサートで便利かと思ったのだが、1データずつ存在チェック+インサートしかなさそう。パフォーマンスはわるそうだが仕方ないかな。。