Bessere Option, um auch die Sortierung von Varchar-Spalten innerhalb der Tabelle zu ändern
SELECT CONCAT('ALTER TABLE `', TABLE_NAME,'` CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci;') AS mySQL
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_SCHEMA= "myschema"
AND TABLE_TYPE="BASE TABLE"
Zusätzlich, wenn Sie Daten mit einem Schlüssel in einer Spalte haben, die nicht utf8 ist, bevor Sie das Bündelskript verwenden
SET foreign_key_checks = 0;
Dies bedeutet, dass globales SQL für mySQL bestimmt ist:
SET foreign_key_checks = 0;
ALTER TABLE `table1` CONVERT TO CHARACTER SET utf8 COLLATE utf8_unicode_ci;
ALTER TABLE `table2` CONVERT TO CHARACTER SET utf8 COLLATE utf8_unicode_ci;
ALTER TABLE `tableXXX` CONVERT TO CHARACTER SET utf8 COLLATE utf8_unicode_ci;
SET foreign_key_checks = 1;
Aber seien Sie vorsichtig , wenn gemäß der MySQL-Dokumentation http://dev.mysql.com/doc/refman/5.1/en/charset-column.html ,
Wenn Sie ALTER TABLE verwenden, um eine Spalte von einem Zeichensatz in einen anderen zu konvertieren, versucht MySQL, die Datenwerte zuzuordnen. Wenn die Zeichensätze jedoch nicht kompatibel sind, kann es zu Datenverlust kommen. ""
BEARBEITEN: Speziell bei Aufzählung vom Spaltentyp stürzt die Aufzählung nur vollständig ab (auch wenn keine speziellen Zeichen vorhanden sind).
Https://bugs.mysql.com/bug.php?id=26731