У меня есть таблица, которая выглядит следующим образом:
CREATE TABLE t1 (
id BIGINT AUTO_INCREMENT NOT NULL PRIMARY KEY,
col1 VARCHAR(256),
UNIQUE INDEX t1_col1_index (col1)
)
Я пытаюсь изменить тип col1, используя следующий запрос:
ALTER TABLE t1 MODIFY COLUMN col1 varchar(191) COLLATE utf8mb4_unicode_ci;
Однако я сталкиваюсь с этимошибка дублирования:
ошибка: («1062», «QMYSQL3: невозможно выполнить оператор», «Дублирующая запись« +123456789 »для ключа« t1_col1_index »»)
Сначала я думал, что это может быть потому, что две или более строки могут «содержать» одинаковое значение для col1, и при изменении длины varchar данные усекаются, но потом я обнаружил, что урезание данных даже не позволяет выполнить запрос.Любые указатели на то, что может быть причиной этого?
РЕДАКТИРОВАТЬ (решено): Усечение происходит, когда @@ sql_mode не установлен с STRICT_TRANS_TABLES.Это было причиной ошибки.