У меня есть базовая таблица со столбцами:
Если уникальный столбец не существует, ВСТАВЬТЕ row, иначе ОБНОВИТЬ строку ....
INSERT INTO pages (name, etc)
VALUES
'bob',
'randomness'
ON DUPLICATE KEY UPDATE
name = VALUES(name),
etc = VALUES(etc)
Проблема в том, что если выполняется ОБНОВЛЕНИЕ, значение auto_increment в столбце id увеличивается. Так что, если выполняется целая куча ОБНОВЛЕНИЙ, идентификатор auto_increment прыгает через крышу.
Очевидно, это была ошибка: http://bugs.mysql.com/bug.php?id=28781
... но я использую InnoDB на mySQL 5.5.8 на общем хостинге.
Другие люди, у которых не было решения много лет назад: запретить автоинкремент при дублировании вставки MYSQL и Почему автоинкремент MySQL увеличивается при неудачных вставках?
Идеи по исправлению? Возможно, я каким-то образом неправильно структурировал базу данных?
****** РЕДАКТИРОВАТЬ ****: Кажется, добавление innodb_autoinc_lock_mode = 0 в ваш файл my.ini решает проблему, но какие варианты у меня есть для общего хостинга?
****** РЕДАКТИРОВАТЬ 2 ******: Хорошо, я думаю, что мой единственный вариант - перейти на MyISAM в качестве механизма хранения. Будучи мега-новичком в mySQL, я надеюсь, что это не вызовет много проблем. Ага?