Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Gibt es Nachteile beim Ändern der MySQL-Tabellencodierung?

Gefahr Ich denke, dass das ALTER wird bestehenden Text zerstören.

Außerdem ... Ihr 'Name' sieht chinesisch aus, also würde ich vermuten, dass Sie chinesische Schriftzeichen speichern möchten? In diesem Fall sollten Sie utf8mb4 verwenden , nicht nur utf8 . Dies liegt daran, dass einige der chinesischen Zeichen 4 Bytes benötigen (und nicht im Unicode-BMP enthalten sind).

Ich glaube, Sie brauchen 2 Schritte :

ALTER TABLE notebooks MODIFY comments BLOB;
ALTER TABLE notebooks MODIFY comments TEXT
          CHARACTER SET utf8mb4  COLLATE utf8mb4_general_520_ci;

Ansonsten die latin1 Zeichen wird nach ut8 "konvertiert". Aber wenn Sie wirklich Chinesisch in der Spalte haben, haben Sie kein Latin1. Die obige Änderung in zwei Schritten schaltet (1) jegliche Kenntnis des Zeichensatzes aus und (2) stellt fest, dass die Bytes wirklich utf8mb4-codiert sind.

Um sicherer zu sein , zuerst

RENAME TABLE notebooks TO old;
CREATE TABLE notebooks LIKE old;
INSERT INTO notebooks SELECT * FROM old;

Führen Sie dann die beiden ALTERs aus und testen Sie das Ergebnis. Wenn es Probleme gibt, können Sie RENAME um die alte Kopie zurückzubekommen.