Meine Datenbank ist nicht in UTF8, und ich möchte alle Tabellen in UTF8 konvertieren, wie kann ich das tun?Wie ändere ich alle Tabellen in meiner Datenbank in den UTF8-Zeichensatz?
Antwort
mysqldump --user=username --password=password --default-character-set=latin1 --skip-set-charset dbname > dump.sql
sed -r 's/latin1/utf8/g' dump.sql > dump_utf.sql
mysql --user=username --password=password --execute="DROP DATABASE dbname; CREATE DATABASE dbname CHARACTER SET utf8 COLLATE utf8_general_ci;"
mysql --user=username --password=password --default-character-set=utf8 dbname < dump_utf.sql
sehen: Turning mysql data into utf8
Für einzelne Tabelle, die Sie so etwas tun kann:
ALTER TABLE Tab CONVERT TO CHARACTER SET utf8 COLLATE utf8_unicode_ci;
Für die gesamte Datenbank Ich weiß nicht, andere Verfahren als die ähnlich wie diese:
http://www.commandlinefu.com/commands/view/1575/convert-all-mysql-tables-and-fields-to-utf8
Für Benutzer ohne Befehlszeilenzugriff können Sie 'SHOW TABLES;' schnell in Ihrer Datenbank ausführen, sie in NimbleText unter http://nimbletext.com/live einfügen und dann mit diesem Muster das Änderungsskript generieren: 'ALTER TABLE \ '$ 0 \' IN CHARAKTERSATZ UMGEBEN utf8 COLLATE utf8_unicode_ci; ' – jocull
Ich schätze, der Tipp über Nimbletext rettet einige Leben. Bis abstimmen! – James
my_database_name
Name mit Ihrer Datenbank
SELECT CONCAT ('ALTER TABLE', TABLE_NAME, ersetzen ' IN CHARAKTERSATZ UMGEBEN utf8 COLLATE utf8_unicode_ci; ') FROM information_schema.TABLES WHERE TABLE_SCHEMA =' my_database_name ';
dies viele Abfragen erstellen, die Sie
laufen und hoffentlich Ihre Datenbank enthält keine „latin1“ innerhalb jeder der Inhalte wie Blog-Posts über Zeichenkodierung ... sonst die Benutzer Gründe für eine haben Klage, wenn Ihre Post-Conversion-Website plötzlich fehlerhafte Datenbankbefehle anbietet! –
nach dem sed: uconv --from-code latin1 --to-code utf8 dump_utf.sql> dump_utf_fixed.sql – scribe
Was ist SED ????? – marcolopes