Conversão do encode do MariaDB para atender o moodle 3.8

A nova versão do moodle precisa do encode utf8mb4 para codificação os emoticons, após a atualização da versão 3.2 para a 3.8, tive que rever as tabelas no mariadb.

Uma consulta simples para verificar a codificação das tabelas:

select table_schema,table_name,table_collation
from information_schema.TABLES where TABLE_SCHEMA='NOME_DO_BANCO';

E a rotina para converter as mais de 360 tabelas do moodle...

DELIMITER //
CREATE PROCEDURE convert_encode()
BEGIN
   DECLARE _stmt CHAR(255);
   DECLARE cmd CHAR(255);
   DECLARE done BOOL DEFAULT 0;

   DECLARE c1 CURSOR FOR
        SELECT CONCAT("ALTER TABLE ", TABLE_SCHEMA, '.', TABLE_NAME,
        ' CONVERT TO CHARACTER SET "utf8mb4" COLLATE "utf8mb4_bin";')
        FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='NOME_DO_BANCO' ;

   DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = 1;

   OPEN c1;

   read_loop: LOOP
       FETCH c1 INTO cmd;
       IF done THEN
          LEAVE read_loop;
       END IF;
       PREPARE _stmt FROM cmd;
       EXECUTE _stmt;
       DEALLOCATE PREPARE _stmt;
    END LOOP;
    CLOSE c1;
END;
//
DELIMITER ;


Mais um passo, para corrigir configurações:
php admin/cli/mysql_collation.php --collation=utf8mb4_unicode_ci

ainda no sql:
alter table mdl_user MODIFY COLUMN username varchar(100) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL DEFAULT '';
alter table mdl_user MODIFY COLUMN email varchar(255) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL DEFAULT '';

Comentários

Postagens mais visitadas deste blog

Jellyfish script

O GBParsy é uma biblioteca para realizar o parser de arquivos GenBank para o Python