Espaço de José Longo

Espaço de José Longo

Textos sobre:


Outras Secções:


Textos recentes


MySQLdump versão 8 e erros de exportação

Na última versão do programa MySQL Workbench (versão 8.0.15) tem problemas ao efectuar backups (dumps) de versões anteriores e no mysqldump (versão 8) é necessário inactivar funcionalidade. Veja como.

Hoje estive a tentar fazer uns backups de bases de dados MySQL utilizando a última versão do MySQL Workbench CE (versão 8.0.15). Ao tentar fazer o backup de servidores com a versão 5.7 do MySQL fui surpreendido com o erro abaixo e o dump não foi efectuado.

Depois de investigar as causas, o erro é devido á última versão do mysqldump.exe versão 8  que utiliza um parâmetro "column-statistics" activado por defeito, que é uma funcionalidade não presente nas versões anteriores do MySQL. 


16:12:31 Dumping nome_bd views and/or routines and/or events

Running: mysqldump.exe --defaults-file="path_do_utilizador\tmpo1npi2.cnf"  --user=nome_bd --host=servidor --protocol=tcp --port=3306 --default-character-set=utf8 --skip-triggers  --no-data  --no-create-db --no-create-info --routines --events "nome_bd"  

mysqldump: Couldn't execute 'SELECT COLUMN_NAME,                       JSON_EXTRACT(HISTOGRAM, '$."number-of-buckets-specified"')                FROM information_schema.COLUMN_STATISTICS                WHERE SCHEMA_NAME = 'nome_bd' AND TABLE_NAME = 'tabela';': Unknown table 'COLUMN_STATISTICS' in information_schema (1109) 

Operation failed with exitcode 2  

16:12:32 Export of path_do_utilizador\Documents\dumps\temp has finished with 41 errors

  

Este erro também ocorre se for utilizado o binário mysqldump da versão 8 do Mysql com servidores com bases de dados anteriores. Se utilizarmos o binário podemos alterar o parâmetro por defeito colocando na lista de parâmetros "--column-statistics=0" e aí já conseguiremos efectuar o dump utilizando a linha de comandos.

Para resolver o problema no MySQL Workbench, nesta última versão deixou de existir a possibilidade de desactivar este parâmetro existente em outras versões anteriores. No entanto existe forma de contornar a situação alterando as preferências deste programa, Mas primeiro vamos ter que descarregar uma versão anterior do mysqldump que podemos descarregar do "site" do MySQL no seguinte endereço: https://dev.mysql.com/downloads/mysql/5.7.html#downloads. Depois podemos extrair apenas o binário do mysqldump e colocar por exemplo na pasta do MySQL Workbench com um nome diferente (por exemplo mysqldump57) para não substituir o que se encontra na versão 8 (se substituírem, não necessitam de fazer mais nenhum passo que irá funcionar). Mas se precisarem de se ligar a servidores com a versão 8 não seria prático fazer esta substituição pois teríamos que andar sempre a substituir sempre que nos ligássemos a servidores diferentes. No meu caso optei por colocar com um nome diferente.

O MySQL Workbench permite, nas preferências do programa, alterar qual o mysqldump que irá utilizar, e aqui torna-se mais fácil alterar se necessário. Para acedermos ás preferências, clicamos em "Edit->Preferences", item "Administration" e depois escolhemos o ficheiro alterado se necessitarmos desta versão, ou apagamos se quisermos utilizar a versão por defeito.

Depois de alterado este parâmetro, já conseguimos fazer os backups dos servidores com versões anteriores á 8 do MySQL nesta versão do MySQL Workbench. A próxima versão já virá com a reposição da possibilidade de activar ou desactivar o parâmetro referido anteriormente.

Espero que possa ajudar e até uma próxima.

JL