Как изменить столбец mediumtext на varchar в MySQL? (изменение таблицы)

#mysql #database #sqldatatypes #alter-table

Вопрос:

Я хотел бы преобразовать формат столбца моей таблицы из mediumtext в varchar, потому что я хочу определить его как столбец с уникальным значением. Если я попытаюсь это сделать, я получу положительный отзыв от администратора, а также от phpmyadmin, но он показывает примечание/предупреждение «Примечание 1246 Преобразование столбца «URL» из VARCHAR в ТЕКСТ», и ничего не происходит.

Текущие значения столбца соответствуют ограничениям длины VARCHAR. Есть ли возможность форсировать это изменение?

Комментарии:

1. Как говорится в примечании «из VARCHAR в ТЕКСТ», похоже, администратор/phpmyadmin пытается изменить тип столбца неправильным образом. Можете ли вы предоставить дополнительную информацию о том, как вы взаимодействуете с администратором/phpmyadmin?

2. Если вы собираетесь в VARCHAR, вам нужно указать максимальную длину.

3. @user14967413 Я попробовал это через UIS, а также с помощью: ALTER TABLE имя ТАБЛИЦЫ ИЗМЕНИТЬ URL СТОЛБЦА varchar(65535);

4. Беги SELECT MAX(LENGTH(url)) FROM tbl; , что ты получишь?

5. @РикдЖеймс 158

Ответ №1:

Ограничение для всего индекса составляет 3072 байта. Вы уверены, что они будут короче этого? Если нет, то есть несколько неуклюжих способов сделать это с помощью дополнительной колонки, содержащей md5 (или какой-либо другой дайджест).

Сообщение об ошибке может относиться к VARCHAR , нет UNIQUE . Обратите внимание, что CHARACTER SET коэффициенты в пределе.

SELECT MAX(LENGTH(url)) FROM tbl; дал тебе всего 158. Предлагаю вам изменить столбец на VARCHAR(191) .