Dicas de migração MySQL UTF/Unicode
-
09-06-2019 - |
Pergunta
Alguém tem alguma dica ou momento a ser observado ao tentar migrar tabelas MySQL dos conjuntos de caracteres suecos ou ascii padrão, que não diferenciam maiúsculas de minúsculas, para utf-8?Alguns dos projetos em que estou envolvido buscam uma melhor internacionalização e o banco de dados será uma parte significativa dessa mudança.
Antes de alterarmos o banco de dados, vamos converter cada site para usar codificação de caracteres UTF-8 (do menos crítico para o mais) para ajudar a garantir que todas as entradas/saídas estejam usando o mesmo conjunto de caracteres.
Obrigado por qualquer ajuda
Solução
Algumas dicas:
- Seu
CHAR
eVARCHAR
colunas usarão até 3 vezes mais espaço em disco.(Você provavelmente não terá muito espaço em disco para palavras suecas.) - Usar
SET NAMES utf8
antes de ler ou gravar no banco de dados.Se você não fizer isso, obterá caracteres parcialmente distorcidos.
Outras dicas
Examinarei os seguintes sites/artigos para ajudar a encontrar uma resposta.
Perguntas frequentes sobre UTF-8 e Unicode
Episódio de Hanselminutos "Resolvendo a Internacionalização com Michael Kaplan"
E também acabei de encontrar uma postagem muito sobre o assunto de Derek Sivers @ O'Reilly ONLamp Blog enquanto escrevia isso. Transformando dados MySQL em latin1 para utf8 utf-8
Cuidado com as limitações de comprimento do índice.Se uma tabela estiver estruturada, diga:
A Varchar (255) B Varchar (255) Key ('A', 'B')
Você ultrapassará o limite de 1.000 bytes em comprimentos de chave.255+255 está bom, mas 255*3 + 255*3 não vai funcionar.
Seu
CHAR
eVARCHAR
colunas usarão até 3 vezes mais espaço em disco.
Somente se estiverem cheios de latin-1 com ordinais> 128.Caso contrário, o aumento do uso de espaço do UTF-8 é mínimo.
As colações nem sempre são favoráveis.Você obterá um agrupamento de umlats com versões sem umlat, o que nem sempre é correto.Talvez você queira usar utf8_bin, mas tudo também diferencia maiúsculas de minúsculas.