Le manuel de référence MySQL ne fournit pas d'exemple clair sur la façon de procéder.Comment ajouter plus de membres à ma colonne de type ENUM dans MySQL?
J'ai une colonne de type ENUM dans laquelle je dois ajouter plus de pays. Quelle est la bonne syntaxe MySQL pour y parvenir?
Voilà ma tentative:
ALTER TABLE carmake CHANGE country country ENUM('Sweden','Malaysia');
L'erreur que je reçois est: ERROR 1265 (01000): Data truncated for column 'country' at row 1.
La colonne country
est la colonne de type ENUM dans la déclaration ci-dessus.
SHOW CREATE TABLE SORTIE:
mysql> SHOW CREATE TABLE carmake;
+---------+---------------------------------------------------------------------+
| Table | Create Table
+---------+---------------------------------------------------------------------+
| carmake | CREATE TABLE `carmake` (
`carmake_id` tinyint(4) NOT NULL AUTO_INCREMENT,
`name` tinytext,
`country` enum('Japan','USA','England','Australia','Germany','France','Italy','Spain','Czech Republic','China','South Korea','India') DEFAULT NULL,
PRIMARY KEY (`carmake_id`),
KEY `name` (`name`(3))
) ENGINE=InnoDB AUTO_INCREMENT=49 DEFAULT CHARSET=latin1 |
+---------+---------------------------------------------------------------------+
1 row in set (0.00 sec)
SELECT pays DISTINCT carmake SORTIE:
+----------------+
| country |
+----------------+
| Italy |
| Germany |
| England |
| USA |
| France |
| South Korea |
| NULL |
| Australia |
| Spain |
| Czech Republic |
+----------------+
Je me risquerais à une ligne de fond plus forte ... "n'utiliser ENUMs que lorsque vous êtes 100% morts certain que les valeurs ne changeront jamais". Si une table devient grande, ce sera pénible si vous devez changer ces valeurs. – DougW
Je ne suis pas sûr d'être d'accord avec ce résultat. Croyez-moi, je n'aime pas du tout ENUM mais je ne vois pas le danger d'ajouter à l'ENUM possible. ENUM est, à son noyau, un mappage de 0 -> Option 1, 1-> Option 2, etc. Ajouter à cela ne devrait pas causer de problème. – JoshStrange
@JoshStrange Ce n'est pas tellement un danger, cela peut être un gros inconvénient lorsque l'ordre de votre ENUM est important (par exemple, lorsqu'il est utilisé pour la commande). – 1in9ui5t