Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Existem efeitos negativos ao alterar a codificação da tabela mysql?


Perigo Acho que que ALTER irá destruir o texto existente.

Além disso, ... Seu 'nome' parece chinês, então eu acho que você deseja armazenar caracteres chineses? Nesse caso, você deve usar utf8mb4 , não apenas utf8 . Isso ocorre porque alguns dos caracteres chineses ocupam 4 bytes (e não estão no Unicode BMP).

Acredito que você precisa de 2 etapas :
ALTER TABLE notebooks MODIFY comments BLOB;
ALTER TABLE notebooks MODIFY comments TEXT
          CHARACTER SET utf8mb4  COLLATE utf8mb4_general_520_ci;

Caso contrário, os caracteres latino1 será "convertido" para ut8. Mas se você realmente tem chinês na coluna, não tem latin1. A alteração de 2 etapas, acima, (1) desativa qualquer conhecimento do conjunto de caracteres e (2) estabelece que os bytes são realmente codificados em utf8mb4.

Para ser mais seguro , primeiro faça
RENAME TABLE notebooks TO old;
CREATE TABLE notebooks LIKE old;
INSERT INTO notebooks SELECT * FROM old;

Em seguida, faça os dois ALTERs e teste o resultado. Se houver problemas, você pode RENAME para recuperar a cópia antiga.