J'essaie de réinitialiser la valeur d'incrémentation automatique dans l'une de mes tables en fonction du nombre de lignes qui y figurent actuellement. Voici le code que j'ai jusqu'ici.MySQL: Redémarrage de AUTO_INCREMENT
SET @numrows = 0;
SELECT COUNT(*) total, @numrows := COUNT(*) + 1 numrows FROM maj_user ;
ALTER TABLE `maj_user` AUTO_INCREMENT = @numrows ;
Cela fonctionne très bien si je l'exécute dans MySQL Workbench. Cependant, je dois l'enregistrer en tant que fichier SQL et l'exécuter dans le cadre d'un script d'importation de base de données. Si je fais ceci, je reçois ceci:
ERROR 1064 (42000) at line 39: You have an error in your SQL syntax; check the
manual that corresponds to your MySQL server version for the right syntax to
use near '@numrows' at line 1
La ligne 39 est l'instruction ALTER TABLE. Des idées?
ne devrait pas vous installerez la valeur '' de AUTO_INCREMENT' à IFNULL (MAX (id), 0) + 1' ou quelle que soit votre colonne auto-incrémentée? Par hasard, il pourrait être le même que le nombre de lignes, mais ce n'est en aucun cas fiable. – tadman
Dans des circonstances typiques, oui. Dans ce cas particulier, la probabilité que les valeurs MAX et COUNT soient égales est une certitude. – Tanoro
Donc, vous jamais, * jamais * supprimer des lignes? Comment votre 'AUTO_INCREMENT' se retrouve-t-il dans le mauvais état, alors? – tadman