mysqldump lança: tabela desconhecida 'COLUMN_STATISTICS' em information_schema (1109)

40

Sempre que tento obter mysqldump , recebo o seguinte erro:

$> mysqldump --single-transaction --host host -u user -p db > db.sql
mysqldump: Couldn't execute 'SELECT COLUMN_NAME, JSON_EXTRACT(HISTOGRAM,
'$."number-of-buckets-specified"') FROM
information_schema.COLUMN_STATISTICS WHERE SCHEMA_NAME = 'db' AND
TABLE_NAME = 'Absence';':
Unknown table 'COLUMN_STATISTICS' in information_schema (1109)

O resultado é um dump que não está completo. O estranho é que o mesmo comando, executado a partir de outro host, funciona sem causar erros. Alguém experimentou o mesmo problema?

Estou usando o mysql-client 8.0 e tento acessar um servidor mysql 5-7 - talvez seja essa a razão?

    
por chevallier 14.05.2018 / 18:40

4 respostas

61

Isto é devido a um novo sinalizador que é ativado por padrão no mysqldump 8. Você pode desativá-lo adicionando --column-statistics = 0. O comando será algo como:

mysqldump --column-statistics=0 --host=<server> --user <user> --password <securepass> 

Verifique este link para mais informações. Para desativar as estatísticas da coluna por padrão, você pode adicionar

[mysqldump]
column-statistics=0

para um arquivo de configuração do MySQL, como /etc/my.cnf ou ~ / .my.cnf.

    
por 17.05.2018 / 15:10
8

Eu passei o dia inteiro procurando por uma solução e aqui apenas compartilhei o meu.

Sim, provavelmente esse erro é devido à diferença de versões.

Basta baixar o MySQL 5.7 ZIP Archive aqui: link e descompactá-lo, então use o arquivo mysqldump.exe de lá.

Se você estiver usando o MySQL Workbench, você precisará definir um caminho para a Ferramenta mysqldump que você baixou indo para Editar - > Preferências - > Administração (do painel esquerdo).

Espero que isso ajude.

    
por 15.05.2018 / 17:32
6

Para aqueles que usam o MySQL Workbench, existe um botão "Opções avançadas" na tela de exportação de dados. A opção "Usar estatísticas de coluna" pode ser desativada, definindo como 0.

    
por 26.10.2018 / 00:57
2

Para tornar esta resposta mais fácil, você pode renomear mysqldump , criar um script de shell em seu lugar e chamar o renomeado mysqldump com o argumento --column-statistics=0 . Por exemplo:

Renomeie o mysqldump:

mv /usr/local/bin/mysqldump /usr/local/bin/_mysqldump

Salve o seguinte script de shell em seu lugar:

#!/bin/sh

_mysqldump --column-statistics=0 $@
    
por 04.07.2018 / 07:25