Trop d'auto incrémente avec SUR le DOUBLE de la CLÉ de mise à JOUR

J'ai une table de base avec des colonnes:

  • id (primaire avec IA)
  • nom (unique)
  • etc

Si la colonne unique n'existe pas, INSÉREZ la ligne, sinon mettre à JOUR la ligne....

INSERT INTO pages (name, etc)
VALUES
  'bob',
  'randomness'
ON DUPLICATE KEY UPDATE
 name = VALUES(name),
 etc = VALUES(etc)

Le problème est que si on effectue une mise à JOUR, la valeur auto_increment sur la colonne id de la monte. Donc, si tout un tas de MISES à jour sont effectuées, l'id auto_increment passe par le toit.

Apparemment c'était un bug: http://bugs.mysql.com/bug.php?id=28781

...mais je suis en utilisant InnoDB de mySQL 5.5.8 sur l'hébergement mutualisé.

D'autres personnes d'avoir des problèmes avec pas de solution il y a des années:
prévenir autoincrement sur MYSQL en double insert et
Pourquoi MySQL autoincrement augmentation sur l'échec des inserts?

Idées sur un correctif? Ai-je peut-être structurés de la base de données de manière incorrecte en quelque sorte?

******EDIT****: Il apparaît que l'ajout de innodb_autoinc_lock_mode = 0 pour votre mon.fichier ini résout le problème mais quelles sont les options que j'ai pour l'hébergement mutualisé?

******EDIT 2******: OK, je pense que ma seule option est de changer de MyISAM que le moteur de stockage. Être un méga mySQL débutant, j'espère que ne pas causer de nombreux problèmes. Ouais?

  • Un gros problème avec MyISAM est qu'il ne prend pas en charge la définition de la base de données de relations. InnoDB ne soutien.
  • innodb_autoinc_lock_mode = 0 a fonctionné pour moi. merci
  • Je suis passé à Aria (MyISAM dans MariaDB), qui empêche l'auto_increment
  • innodb_autoinc_lock_mode = 0 est de ralentir concurente INSERT parce que l'utilisation de la table de verrouillage automatique inc champ. C'est peut être mauvais.