列のある基本的なテーブルがあります。
- id(プライマリとAI)
- 名前(一意)
- 等
一意の列が存在しない場合は、行を挿入します。存在しない場合は、行を更新します...。
INSERT INTO pages (name, etc)
VALUES
'bob',
'randomness'
ON DUPLICATE KEY UPDATE
name = VALUES(name),
etc = VALUES(etc)
問題は、UPDATEを実行すると、id列のauto_increment値が上がることです。したがって、大量のUPDATEが実行されると、idauto_incrementが屋根を通り抜けます。
どうやらそれはバグでした:http://bugs.mysql.com/bug.php?id = 28781
...しかし、私は共有ホスティングのmySQL5.5.8でInnoDBを使用しています。
何年も前に解決策がない問題を抱えている他の人々: MYSQL重複挿入での自動インクリメントを防止し 、失敗した挿入でMySQL自動インクリメントが増加するのはなぜですか?
修正のアイデア?どういうわけかデータベースを間違って構成したのでしょうか?
******編集****:my.iniファイルにinnodb_autoinc_lock_mode = 0を追加すると問題が解決するようですが、共有ホスティングにはどのようなオプションがありますか?
******編集2******:OK、私の唯一の選択肢は、ストレージエンジンとしてMyISAMに変更することだと思います。メガmySQLの初心者なので、それが多くの問題を引き起こさないことを願っています。うん?