2010-03-14 5 views
3

Un jour, wordpress a soudainement sauté de pots ID 9110 à 890000000 post. jours plus tard je voudrais reculer de nouveaux messages pour continuer de l'id 9111. Je suis sûr que l'ID n'atteindra jamais l'ID 890000000, pas de problème ici, mais id est un champ d'auto-incrémentation et ALTER TABLE wp8_posts AUTO_INCREMENT = 9111 ne fonctionne pas. Puis-je forcer l'id à continuer à partir de 9111?Modifier un champ auto-incrémenté à un précédent

Répondre

2

Vous devez probablement renuméroter la publication existante pour qu'elle ait un ID de 9111, puis émettre votre commande alter table. Vous devrez également changer l'ID dans toutes les autres tables qui pointent vers cet ID. Si vous lancez ensuite votre commande alter table, cela devrait fonctionner. Si cela ne fonctionne toujours pas, vous pouvez renommer la table, à quelque chose comme wp8_posts_backup, avec:

RENAME TABLE wp8_posts TO wp8_posts_backup 

Ensuite, créez une autre table avec le même schéma avec:

Create Table wp8_posts LIKE wp8_posts_backup; 

puis copiez le les données de la sauvegarde à la nouvelle. Tout cela nécessite encore de renuméroter l'ancien poste, ou de le supprimer et de le recréer, car la base de données sait qu'il existe un enregistrement avec un ID de 890000000, et essayera toujours d'aller au-dessus lors de la création de l'ID suivant. Je crois qu'il utilise l'index sur la colonne pour trouver le nombre le plus élevé, et calcule l'ID suivant, plutôt que de stocker la même valeur ailleurs. C'est pourquoi il est nécessaire d'avoir un index unique sur tout champ auto-incrémenté.

+0

Peut-être que je cherchais un moyen, quand il n'y a aucun moyen. Je vais penser à Renuméroter tous les messages et changer toutes les tables connexes, mais c'est un gâchis Merci –