MySQL Datenbank in utf8 konvertieren

Als Erstes wird ein Dump der Datenbank erstellt. Mit folgendem Oneliner werden auch gleichzeitig alle Definitionen in utf8 geändert:

mysqldump --opt -Q -u <deinuser> -p<deinpass> -h <deinhost> <deinedatenbank> | sed s'/DEFAULT CHARSET=.*;/DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;/g''> mysql_dump.sql

Als nächstes muß die aktuelle Kodierung der Dump-Datei festgestellt werden:

file -i mysql_dump.sql

Sollte die Datei bereits in utf8 vorliegen muß diese nicht mehr geändert werden, andernfalls wird die Kodierung der Datei mit folgendem Befehl auf utf8 geändert:

iconv -f <altescharset> -t utf8 mysql_dump.sql > mysql_dump.utf8.sql

Um den Dump wieder einzuspielen wird nun folgender Befehl genutzt:

mysql -u <deinuser> -p<deinpass> -h <deinhost> --default-character-set=utf8 <deinedatenbank> < mysql_dump.sql (oder mysql_dump.utf8.sql)

In MySQL sollte die Datenbank nun in utf8 vorliegen.