我有一张表"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>
问题似乎与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`)
)