Справочное руководство по MySQL не дает четкого примера о том, как это сделать.Как добавить больше членов в столбец типа ENUM в MySQL?
У меня есть столбец названия ENUM, в котором мне нужно добавить больше стран. Каков правильный синтаксис MySQL для достижения этого?
Вот моя попытка:
ALTER TABLE carmake CHANGE country country ENUM('Sweden','Malaysia');
Ошибки я получаю: ERROR 1265 (01000): Data truncated for column 'country' at row 1.
Колонка country
является столбец ENUM-типа в вышеприведенном заявлении.
SHOW CREATE TABLE ВЫВОД:
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 DISTINCT FROM страна carmake ВЫХОД:
+----------------+
| country |
+----------------+
| Italy |
| Germany |
| England |
| USA |
| France |
| South Korea |
| NULL |
| Australia |
| Spain |
| Czech Republic |
+----------------+
Я бы рискнул получить более сильный результат ... «используйте только ENUM, когда вы на 100% уверены, что уверены, что значения никогда не изменятся». Если таблица станет большой, будет боль, если вам когда-либо придется изменить эти значения. – DougW
Я не уверен, что согласен с этим. Поверьте мне, мне совсем не нравится ENUM, но я не вижу опасности в добавлении к возможному ENUM. ENUM - это, по сути, сопоставление 0 -> Вариант 1, 1-> Вариант 2 и т. Д. Добавление к этому не должно вызывать проблемы. – JoshStrange
@JoshStrange Это не так опасно, это может быть огромным неудобством, когда порядок вашего ENUM важен (например, при заказе). – 1in9ui5t