J'utilise le type de données Enum comme clé primaire référencée comme clé étrangère dans une autre table. Si je dois ajouter un élément supplémentaire à cette valeur enum, j'utiliseForcer le type MySQL ENUM à utiliser 2 octets depuis le début
ALTER TABLE <table> MODIFY <colName> ENUM(<OLD VALUES>, NEW VAL);
sur les deux tables. Ça fonctionne bien.
J'ai eu un exemple obscur dans lequel j'ai fini par aller de < 255 valeurs à plus. Dans ce cas, ENUM devra passer du stockage de 1 octet au stockage de 2 octets. C'est quand ça échoue. Me donner
erreur 1025 (HY000): Erreur sur renommage de './TXCAD/#sql-5912_86' à' ./TXCAD/EN_TABLE »(errno: 150)
Je l'ai fait une des recherches et découvert que cette conversion de 1 octet à deux octets dans la table principale rend la différence de type de données de clé étrangère. Existe-t-il un moyen de forcer MySql à utiliser 2 octets depuis le début même si ENUM() a moins de 255 valeurs lors de la création de la table? ?
En utilisant MySql - 5.1 tables InnoDB
Merci de votre recherche. J'ai vérifié la page aussi, rien. Ne semble pas être un moyen simple de forcer sa taille. C'est un type de données vraiment puissant, mais sous-utilisé par MySQL. – Jai
Impossible de trouver un moyen pour cela. Ne croyez pas theres une solution normale à cela. – Jai