1. ホーム
  2. mysql

[解決済み】MySQLのENUM型カラムにメンバーを追加する方法は?

2022-04-14 04:12:33

質問

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タイプのカラムである。

ショー作成表 OUTPUTです。

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 country FROM carmake OUTPUTです。

+----------------+
| country        |
+----------------+
| Italy          |
| Germany        |
| England        |
| USA            |
| France         |
| South Korea    |
| NULL           |
| Australia      |
| Spain          |
| Czech Republic |
+----------------+

どのように解決するのですか?

ALTER TABLE
    `table_name`
MODIFY COLUMN
    `column_name2` enum(
        'existing_value1',
        'existing_value2',
        'new_value1',
        'new_value2'
    )
NOT NULL AFTER `column_name1`;