#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)
.