Слишком много автоматических приращений с ON DUPLICATE KEY UPDATE

У меня есть базовая таблица со столбцами:

  • id (первичный с AI)
  • name (уникальный)
  • и т. Д.

Если уникальный столбец не существует, ВСТАВЬТЕ 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, я надеюсь, что это не вызовет много проблем. Ага?

17
задан Community 23 May 2017 в 12:17
поделиться