J'ai une grosse table MySQL "docs" (plus de 3 000 000 de lignes).
Ce tableau a la colonne id
--- clé primaire non signée et did
----- non signé.
Parfois, certaines lignes sont supprimées. Mais j'ai besoin de cette auto-incrémentation aller 1234 et non 1479.
J'exécute la requête SQL:
update docs set id=@num:=@num+1 where 0 in(select @num:=0)
et recevez l'erreur # 1062.
2 questions: 1. Pourquoi ai-je une entrée en double pour la clé principale? 2. Comment puis-je les supprimer?
Réponses:
0 pour la réponse № 1Mon idée est plus simple (supprimer et ajouter primaire):
ALTER TABLE docs
LAISSEZ TOMBER id
;
ALTER TABLE docs
AJOUTER id
INT UNSIGNED NOT NULL AUTO_INCREMENT FIRST, AJOUTER LA CLÉ PRIMAIRE (id
);