Joomla! Volunteers Portal

Mensagem de erro:

Illegal mix of collations (utf8_unicode_ci,IMPLICIT) and (utf8_general_ci,IMPLICIT) for operation '=' SQL=SELECT SQL_CALC_FOUND_ROWS DISTINCT `tb_solucao`.`id` AS `tb_solucao___id`

 

Quando ocorre:

No meu caso, ocorreu ao atualizar um site da versão 3.4.8 para 3.6.2.
Ao que parece, esse problema no banco de dados ocorre após a versão 3.5 do Joomla, que usa as tabelas em utf8bm4_unicode_ci. Quando o servidor não aceita utf8bm4, ele assume utf8_unicode_ci para as tabelas nativas.
O problema ocorre quando fazemos um join de uma tabela que já tínhamos em general_ci com uma tabela nativa do Joomla, que agora está em unicode. No caso, um formulário do Fabrik tinha um elemento databasejoin buscando dados na tabela nativa #__users.

 

Solução:

1) Alterar o collation do database, tabela e campos da tabela.  

  • ALTER DATABASE `nome_database` DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci;
  • ALTER TABLE `tabela_antiga_general` DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci ENGINE=InnoDB;
  • Elementos/campos foram alterados pelo phpMyAdmin, mas o comando seria:  ALTER TABLE `clientes` CHANGE `nome` `nome` VARCHAR( 10 ) CHARACTER SET utf8 COLLATE utf8_unicode_ci

 

2) Deletar o elemento com problema e criá-lo novamente. Sem esse passo, os campos da tabela original para join não são reconhecidos.

 

Fontes:

http://www.uolhost.uol.com.br/faq/banco-de-dados/o-que-e-collation-de-uma-base-de-dados-como-alterar.html
http://fabrikar.com/forums/index.php?threads/error-1267-with-joomla-3-5-update.43574/

https://issues.joomla.org/tracker/joomla-cms/9423
http://forum.joomla.org/viewtopic.php?t=913699

 

 

 

 

Joomla! is a trademark of Open Source Matters. This site is not affiliated with or endorsed by the Joomla! Project or its trademark owners.