我有一个数据类型为"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>
答案 0 :(得分:-1)
问题似乎出在创建表查询上。该表已使用“唯一键”创建,该表在更改表时导致错误。如果可以使用
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`)
)