Проблема преобразования MySQL ENUM в VARCHAR - PullRequest
0 голосов
/ 12 марта 2019

У меня есть таблица "temp_enum_test1" с типом данных "enum('IE','IS')". Когда я пытаюсь изменить таблицу, изменив тип данных на VARCHAR с 'ENUM', получаю ошибку повторяющегося ввода. Принимает записи типа 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> 

1 Ответ

0 голосов
/ 12 марта 2019

Проблема, похоже, связана с запросом создания таблицы. Таблица была создана с '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`)
)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...