Y a-t-il un moyen de renommer une colonne sur une table InnoDb sans une modification majeure? P>
La table est assez grande et je veux éviter les temps d'arrêt majeurs. P>
3 Réponses :
S'il n'y a aucune contrainte, vous pouvez le modifier sans tracas autant que je sache. Si vous devrez d'abord supprimer les contraintes, modifier et ajouter les contraintes. P>
La modification d'une table avec de nombreuses lignes peut prendre beaucoup de temps (si si les colonnes impliquées ne sont pas indexées, cela peut être trivial).
Si vous souhaitez spécifiquement éviter d'utiliser le Alter table Syntaxe créé spécifiquement à cette fin, vous pouvez toujours créer une table avec presque exactement Structure (mais Nom différent) et copier toutes les données dedans, comme: P> pour certaines requêtes de table alter, ce qui précède peut être un peu plus rapide. Cependant, pour un changement de nom de colonne simple, cela pourrait être trivial. Je pourrais essayer de créer une table identique et d'effectuer le changement sur celui-ci afin de voir combien de temps vous envisagez. P> p>
Renommer une colonne (avec Consultez PT-Online-Schema-Change . Cela vous aide à faire de nombreux types de modifications modifiées sur une table sans verrouiller toute la table pendant la durée de l'alter. Vous pouvez continuer à lire et à écrire la table d'origine pendant qu'il copie les données dans la nouvelle table. Les modifications sont capturées et appliquées à la nouvelle table via des déclencheurs. P> Exemple: p> mise à jour: em> MySQL 5.6 Peut effectuer des types d'opérations alternatives sans reconstruire la table et changer le nom d'une colonne est l'une de ces personnes pris en charge en tant que changement en ligne. Voir http://dev.mysql.com /doc/refman/5.6/fr/innodb-Create-Index-overvievieview.html Pour un aperçu de quels types d'altérations faites ou ne supportez pas cela. P> P> alter Table ... Modifier la colonne code>) nécessite malheureusement que MySQL exécute une copie de la table complète.
Voyez juste la syntaxe de modification.