Mysql
 sql >> Database >  >> RDS >> Mysql

Ci sono effetti negativi quando si cambia la codifica della tabella MySQL?

Pericolo Penso che quello ALTER distruggerà il testo esistente.

Inoltre, ... Il tuo "nome" sembra cinese, quindi immagino che tu voglia memorizzare i caratteri cinesi? In tal caso, dovresti usare utf8mb4 , non solo utf8 . Questo perché alcuni dei caratteri cinesi occupano 4 byte (e non sono in Unicode BMP).

Credo che tu abbia bisogno di 2 passaggi :

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

Altrimenti i caratteri latini1 verrà "convertito" in ut8. Ma se hai davvero il cinese nella colonna, non hai latin1. L'alterazione in 2 passaggi, sopra, (1) disattiva qualsiasi conoscenza del set di caratteri e (2) stabilisce che i byte sono effettivamente codificati con utf8mb4.

Per essere più sicuro , prima fai

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

Quindi esegui i due ALTER e verifica il risultato. In caso di problemi, puoi RENAME per recuperare la vecchia copia.