Если кто-то ищет полное решение для изменения кодировки по умолчанию для всех таблиц базы данных и преобразования данных, это может быть одно:
DELIMITER $$
CREATE PROCEDURE change_character_set(in charset VARCHAR(64), in collation VARCHAR(64))
BEGIN
DECLARE done BOOLEAN DEFAULT false;
DECLARE tab_name VARCHAR(64);
DECLARE charset_cursor CURSOR FOR
SELECT table_name FROM information_schema.tables
WHERE table_schema = DATABASE();
DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;
SET foreign_key_checks = 0;
OPEN charset_cursor;
change_loop: LOOP
FETCH charset_cursor INTO tab_name;
IF done THEN
LEAVE change_loop;
END IF;
SET @alter = concat('ALTER TABLE ', tab_name,
' CONVERT TO CHARACTER SET ', charset,
' COLLATE ', collation , ';');
SELECT @alter;
PREPARE stmt FROM @alter;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
END LOOP change_loop;
CLOSE charset_cursor;
SET foreign_key_checks = 1;
END$$
DELIMITER ;
Вы можете поместить этот код в файл, например, chg_char_set.sql
и выполнить его, например. позвонив из терминала MySQL:
mysql> source ~/path-to-the-file/chg_char_set.sql
Затем вызвать определенную процедуру с желаемыми входными параметрами, например,
mysql> change_character_set('utf8mb4', 'utf8mb4_general_ci');