MySQL ENUM到VARCHAR转换问题

问题描述 投票:0回答:1

我有一张表"temp_enum_test1",数据类型为"enum('IE','IS')"。当我尝试通过从'ENUM'将数据类型更改为VARCHAR来更改表时,会出现重复输入错误。它接受ENUM类型的记录。即使我查询表格,我也会获得独特的行。有人可以帮我这里。以下是架构和我的方法。

mysql> CREATE TABLE temp_enum_test1 (
    ->   r_id int(11) NOT NULL,
    ->   r_type enum('IE','IS'),
    ->   UNIQUE KEY uk_temp_enum_test1 (r_id,r_type)
    -> );
Query OK, 0 rows affected (0.38 sec)

mysql> insert into temp_enum_test1 values(1,'IE');
Query OK, 1 row affected (0.07 sec)

mysql> insert into temp_enum_test1 values(1,'IS');
Query OK, 1 row affected (0.05 sec)

mysql> select * from temp_enum_test1;
+------+--------+
| r_id | r_type |
+------+--------+
|    1 | IE     |
|    1 | IS     |
+------+--------+
2 rows in set (0.00 sec)

mysql> alter table temp_enum_test1 change column r_type r_type  varchar(30);
ERROR 1062 (23000): Duplicate entry '1-I' for key 'uk_temp_enum_test1'
mysql> 
mysql sql enums alter mysql-5.7
1个回答
-1
投票

问题似乎与create table查询有关。该表是使用'UNIQUE KEY'创建的,在更改表时会导致错误。如果可以使用

PRIMARY KEY (`r_id`)

代替 ...

UNIQUE KEY uk_temp_enum_test1 (r_id,r_type)

完成CREATE命令如下;

CREATE TABLE IF NOT EXISTS temp_enum_test1 (
  `r_id` int(11) NOT NULL AUTO_INCREMENT,
  `r_type` enum('IE','IS') NOT NULL,
  PRIMARY KEY (`r_id`)
)
© www.soinside.com 2019 - 2024. All rights reserved.