Ich muss den Zeichensatz für zwei MySQL-Tabellen in UTF8 ändern. Zunächst habe ich die folgende Abfrage erstellt, aber ich wollte wissen, ob dies eine sichere Methode ist, den Zeichensatz in (Live-) Tabellen zu ändern, die Fremdschlüssel haben. In meiner Entwicklungsumgebung habe ich einfach die "FOREIGN_KEY_CHECKS = 0" ohne das Schloss benutzt, aber ich war nicht so besorgt über die Integrität zu der Zeit, mit dem Live-System, das ich bin.ist dies eine sichere Möglichkeit, Zeichensatz für eine MySQL-Tabelle in UTF-8 zu ändern
LOCK TABLES
tags WRITE,
tags_lost WRITE;
SET FOREIGN_KEY_CHECKS = 0;
ALTER TABLE myDB.exampleTable CHARACTER SET utf8 COLLATE utf8_general_ci;
ALTER TABLE myDB.exampleTable CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci;
ALTER TABLE myDB.exampleTable CHARACTER SET utf8 COLLATE utf8_general_ci;
ALTER TABLE myDB.exampleTable CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci;
SET FOREIGN_KEY_CHECKS = 1;
UNLOCK TABLES;
Die andere Option ist, um die Tabellen zu sperren, den Fremdschlüssel fallen, ändern Sie den Zeichensatz, und dann den Schlüssel neu, aber ich habe nur gehofft, diese Verknüpfung genauso gut funktionieren würde.
Sie möchten nicht zu UTF8 wechseln, sondern zu 'UTF8mb4' wechseln, [bitte lesen Sie, warum das so ist] (http://stackoverflow.com/a/279279/3536236) – Martin