Konvertieren Sie eine MySQL-Datenbank von Latein nach UTF-8
Ich bin die Konvertierung einer website von ISO auf UTF-8, so dass ich brauchen, um zu konvertieren MySQL-Datenbank zu.
Im Internet lese ich verschiedene Lösungen, ich weiß nicht, welches man wählen.
Brauche ich wirklich zum umwandeln meiner varchar-Spalten binary, dann auf UTF-8 so:
ALTER TABLE t MODIFY col BINARY(150);
ALTER TABLE t MODIFY col CHAR(150) CHARACTER SET utf8;
Dauert es eine lange Zeit zu tun, die für jede Spalte jeder Tabelle, jeder Datenbank.
Ich habe 10 Datenbanken, mit 20 Tabellen, mit rund 2 - 3 varchar-Spalten (2 Abfragen pro Spalte), das gibt mir um 1000 Abfragen zu schreiben! Wie es zu tun?
Gelöst :
Ich poste den code, den ich verwendet habe:
PASSWORD=""
db=$1
mysqldump --password=$PASSWORD --set-charset --skip-set-charset --add-drop-table --databases "$db" > /home/dev/backup/bdd.sql
QUERY="ALTER DATABASE \`$db\` DEFAULT CHARACTER SET utf8;"
mysql --password=$PASSWORD --database "$db" -e "$QUERY"
mysql --password=$PASSWORD --default-character-set=utf8 < /home/dev/backup/bdd.sql
Siehe die Antwort weiter unten für mehr Informationen.
InformationsquelleAutor der Frage Matthieu Napoli | 2010-03-30
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie tun, sehr einfach mit einem dump. Machen Sie einen dump mit
Dann erstellen Sie eine weitere Datenbank, stellen Sie den Standard-Zeichensatz auf UTF-8 und dann laden Sie Ihre dump zurück mit:
Die Grundidee ist es, einen dump ohne Zeichen der Codierung von Daten.
Also, bei einer Zeit erstellen, in der Tabelle Codierung wäre die Erben von der Datenbank-Codierung und auf UTF-8 eingestellt. Und mit
--default-character-set
sagen wir MySQL umgeschrieben unsere Daten automatisch.InformationsquelleAutor der Antwort Your Common Sense
Bin ich mit mysqldump Ver 10.11 Distrib 5.0.77
Aus irgendeinem Grund erstellen-Optionen-Engine und auto_increment weggelassen wurde. Dies verursacht eine Menge von insert-Fehler, weil auto_increment-gegangen war, auf der primary key-Felder.
Dieser arbeitete für mich. Ich bin mit --opt und mit sed zu entfernen Zeichensatz von sql-Datei.
InformationsquelleAutor der Antwort Klaus Hessellund
InformationsquelleAutor der Antwort Max Zhuk