Я считаю, что эта статья делает именно то, что вам нужно .
Я перефразировал шаги, которые вы должны предпринять ниже - замените «MyDb» именем вашей базы данных Я бы порекомендовал сделать резервную копию перед началом!
USE information_schema;
SELECT CONCAT('ALTER TABLE ', table_name, ' MODIFY ', column_name, ' ', REPLACE(column_type, 'char', 'binary'), ';') FROM columns WHERE table_schema = 'MyDb' and data_type LIKE '%char%';
SELECT CONCAT('ALTER TABLE ', table_name, ' MODIFY ', column_name, ' ', REPLACE(column_type, 'text', 'blob'), ';') FROM columns WHERE table_schema = 'MyDb' and data_type LIKE '%text%';
SELECT CONCAT('ALTER TABLE ', table_name, ' MODIFY ', column_name, ' ', column_type, ' CHARACTER SET utf8;') FROM columns WHERE table_schema = 'MyDb' and data_type LIKE '%char%';
SELECT CONCAT('ALTER TABLE ', table_name, ' MODIFY ', column_name, ' ', column_type, ' CHARACTER SET utf8;') FROM columns WHERE table_schema = 'MyDb' and data_type LIKE '%text%';
Скопируйте вывод всех вышеприведенных операторов SELECT
в сценарий SQL. Добавьте к этому следующее:
ALTER DATABASE MyDb CHARACTER SET utf8;
Переключитесь на MyDb (USE MyDb;
) и запустите сценарий SQL.