Сначала определите, как вы будете выполнять преобразование кодировки. Если таблица правильно закодирована в latin1, то это желаемое преобразование:
ALTER TABLE tbl CONVERT TO CHARACTER SET utf8;
Если вместо этого у вас есть utf8 байтов, хранящихся в столбцах latin1, тогда 'fix' более сложный .
Однако это меняет все столбцы CHAR
/ TEXT
в таблице.Это нормально?
Если все в порядке, тогда будут сгенерированы все ALTERs
.
SELECT DISTINCT
CONCAT("ALTER TABLE ", table_schema, ".", table_name,
" CONVERT TO CHARACTER SET utf8 COLLATE utf8_unicode_ci;")
FROM information_schema.columns
WHERE character_set = 'latin1'
AND table_schema NOT IN ('mysql', 'information_schema', 'performance_schema');
Затем вы можете скопировать / вставить их в инструмент командной строки mysql.
Если вам нужно изменить только отдельные столбцы, исправление будет затруднено, потому что остальные атрибуты каждого столбца должны повторяться.Это не легко сделать в запросе.