Alterando o Collation

Para alterar os collations dos campos das tabelas

Ideal para resolver erros do tipo “Illegal mix of collations”

No phpMyAdmin

  • Clica no nome da tabela (não no ícone da tabela) na coluna da esquerda;
  • Clica no lápis correspondente ao campo a ser editado;
  • Altere o collation do campo e clique em Salvar.
  • Repita este processo até concluir a alteração em todos os campos envolvidos de todas as tabelas envolvidas.

ou rode a query:

ALTER TABLE <tabela> CHANGE <campo_nomeatual> <campo_novonome> <tipo>(<tamanho>) CHARACTER SET <encoding> COLLATE <collation>;

Exemplos:

ALTER TABLE  `tasks` CHANGE  `task_name`  `task_name` VARCHAR( 255 ) CHARACTER SET latin1 COLLATE latin1_swedish_ci NULL DEFAULT NULL;

ALTER TABLE `sua_tabela` CHANGE `seu_campo` `seu_campo` TEXT CHARACTER SET latin1 COLLATE latin1_general_ci;

ALTER TABLE `sua_tabela` CHANGE `seu_campo` `seu_campo` VARCHAR( 10 ) CHARACTER SET utf8 COLLATE utf8_general_ci;

Obs: A alteração do collation das tabelas e da base são opcionais em casos de erros do tipo Illegal mix of collations, mas recomenda-se que sejam iguais também. A alteração de collation dos campos validam tanto os registros contidos nos campos atuais quanto os registros novos a serem inseridos.

Para alterar os collations das tabelas

No phpMyAdmin

  • Clica no nome da tabela (não no ícone da tabela) na coluna da esquerda;
  • Clica na aba Operações, ao topo;
  • Nas opções da tabela altere o Collation dela.
  • Repita este processo até concluir a alteração em todas as tabelas envolvidas.

ou rode a query:

ALTER TABLE <tabela> DEFAULT CHARACTER SET <charset> COLLATE <collation>;

Exemplos:

ALTER TABLE 'sua_tabela' DEFAULT CHARACTER SET latin1 COLLATE latin1_general_ci;
ALTER TABLE 'sua_tabela' DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;

Obs: A alteração do collation da tabela não altera o collation dos campos dos tipos derivados de string já existentes. Caso sejam inseridos novos campos (não novos registros) sem especificação de collation, eles herdarão o mesmo collation da tabela.

Para alterar o collation da base

No phpMyAdmin

  • Clica no nome da base na coluna da esquerda (acima das tabelas);
  • Clica na aba Operações, ao topo;
  • A opção de alteração de collation da base está disponível no rodapé.

ou rode a query:

ALTER DATABASE <base> DEFAULT CHARACTER SET <charset> COLLATE <collation>;

Exemplos:

ALTER DATABASE `sua_base` DEFAULT CHARACTER SET latin1 COLLATE latin1_general_ci;
ALTER DATABASE `sua_base` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;

Obs: A alteração do collation da base não altera o collation das tabelas e dos campos dos tipos derivados de string já existentes. Caso sejam inseridas novas tabelas sem especificação de collation, elas herdarão o mesmo collation da base.

Fonte: Localweb

No comments yet.