Как конвертировать MYSQL UTF-8, если размер строки слишком велик?

Я нахожусь в базе данных MYSQL, пытаясь изменить мою таблицу, закодированную в latin1, в UTF-8. Имя таблицы - "Журналист", в котором 12 столбцов указаны с максимальной длиной 3000. Это sql, который я запускаю.

ALTER TABLE `journalist` CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci;

Ошибка, которую я получаю

Размер строки слишком велик. Максимальный размер строки для используемого типа таблицы, не считая больших двоичных объектов, составляет 65535. Сюда входят накладные расходы на хранение, см. Руководство. Вы должны изменить некоторые столбцы на TEXT или BLOB

Должен ли я изменить размер таблицы перед запуском этого запроса на преобразование? и / или как я могу выполнить это изменение кодировки в противном случае?

1 ответ

Решение

Я сделал то, что предложил @Wrikken. Я удалил свою таблицу и снизил атрибуты varchar max_length до 1500 с 3000. Затем я запустил этот SQL на моей новой пустой таблице

ALTER TABLE `table_name` CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci;

отсюда я снова заполнил его своей резервной таблицей, используя скрипт.

Чтобы ответить на вопрос: Нижние пределы max_length varchar Или измените поля varchar на LONGTEXT или BLOBS

Другие вопросы по тегам