mysqldump throws: Tabela desconhecida 'COLUMN_STATISTICS' em information_schema (1109)

118

Sempre que tento fazer 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 despejo que não está completo. O estranho é que o mesmo comando, executado a partir de outro host, funciona sem gerar erros. Alguém experimentou o mesmo problema?

Estou usando o mysql-client 8.0e tento acessar um 5-7servidor mysql - talvez seja esse o motivo?

chevallier
fonte

Respostas:

169

Isso ocorre devido a um novo sinalizador 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=<password> 

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.

cristhiank
fonte
--databases <nome do banco de dados> para um banco de dados específico
Mohhamad Hasham
@forthrin Resposta editada para mostrar como fazer a alteração permanente.
Andrew Schulman
2
Há também uma configuração no MySQL Workbench: Em "Opções Avançadas ...", na seção "outros", há uma estatística de coluna definida como "TRUE". Altere para zero, como sugerir para desativar.
Alex Barker
6
O MySQLWorkbench v8.0.14 não possui essa configuração. O que eu fiz (em um Mac) foi fazer o download de uma versão mais antiga do MySQLWorkbench, abrir esse pacote (Mostrar conteúdo do pacote) e retirar sua versão do pacote 'mysqldump'. Em seguida, editei as preferências do MySQLWorkbench para ver esta versão do 'mysqldump' em vez da sua. A exportação funciona bem sem a necessidade de definir sinalizadores. ref: bugs.mysql.com/bug.php?id=91640#c484427
Scott
1
Para quem usa o DataGrip, clique com o botão direito do mouse no esquema na janela Banco de Dados, vá para "Despejar com 'mysqldump'" e adicione o --column-statistics=0argumento à lista de argumentos gerados na caixa na parte inferior da janela pop-up.
Travesty3
27

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 da coluna" pode ser desativada definindo-se como 0.

Não confirmei, mas as seguintes informações também foram sugeridas: Na versão 8.0.14, está faltando. Na versão 8.0.16, está fazendo isso por padrão.

atjoedonahue
fonte
7
Somente o MySQL Workbench versão 8.0.13 e posterior tem essa opção para desativar "Usar Estatísticas da Coluna".
Paul Deng
7
O MySQL Workbench versão 8.0.14 não possui essa opção. Parece que eles tiraram.
Dean ou
3
Na verdade, bugs.mysql.com/bug.php?id=94294 deve estar de volta em 8.0.16 ...
Jean-Christophe Meillaud
ainda acontece às 8.0.16
Amir Bar
Posso confirmar que o MySQLWorkbench v8.0.17 corrigiu o problema (MacOs). Ele estava lançando esse erro no MySQLWorkbench v8.0.12 e atualizado. Notei que ele não me alertou sobre a exportação de dados de um banco de dados 5.X e anexou automaticamente --column-statistics=0o comando de exportação.
Elte156 03/09
20

Passei o dia inteiro procurando uma solução, e fui até aqui apenas para compartilhar a minha.

Sim, provavelmente este erro ocorre devido à diferença de versões.

Basta baixar o arquivo ZIP do MySQL 5.7 aqui: https://dev.mysql.com/downloads/mysql/ e descompactá-lo, depois use o arquivo mysqldump.exe a partir daí.

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

Espero que isto ajude.

DodiX
fonte
3
Para usuários do Windows, este .exe estava localizado em:C:\Program Files\MySQL\MySQL Server 5.7\bin\mysqldump.exe
Jason
1
Ainda falta ao MySQLWorkbench v8.0.16 a opção de definir o sinalizador de estatísticas da coluna. Esta solução é sem dúvida a melhor resposta, pois permite a correspondência adequada das versões do MySQL em caso de problemas futuros.
Kiksy 25/04
5

Para facilitar essa resposta , você pode renomear mysqldump, criar um script de shell em seu lugar e chamar o renomeado mysqldumpcom o --column-statistics=0argumento 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 $@
Pierlo
fonte
1
Essa é uma ótima sugestão e funciona no MacOSX com o Mysql Workbench, no entanto, é necessário incluir o caminho completo para o seu executável mysqldump real ou ele não parece funcionar. Eu tentei ./, mas ainda não funcionou. Colocar o caminho completo e o Workbench foi capaz de executá-lo com as estatísticas sinalizadas.
Andy D
4

Solução mais fácil

Ao usar o Mysql Workbench 8.0

  • Abra a guia "Exportação de dados"
  • Clique em Opções avançadas insira a descrição da imagem aqui
  • Sob o título Outro, defina as estatísticas da coluna como 0 insira a descrição da imagem aqui
  • Exportar novamenteinsira a descrição da imagem aqui

Boa sorte!

anson
fonte
5
Não tenho essa opção na seção "Outros"
JoRouss
@JoRouss Download 8.0.13 downloads.mysql.com/archives/workbench talvez a versão .16 a tenha novamente! Caso contrário, usamos a linha de comando :-)
François Breton
Acabei usando a sugestão @DodiX. Obrigado @Francois!
JoRouss
Solução estúpida até a versão 8.0.16: nas opções avançadas, marque "force" para que o erro seja ignorado. Claro que isso irá ignorar qualquer outro erro
Bostone
@Ostone, esta solução não omite o erro.
Casper
0

Na minha situação, estou usando o mac-OS. A propósito, havia [mysqldump] column-statistics=0campos no my.cnfarquivo que são colocados no /usr/local/etcdiretório A exclusão desse campo corrigiu o problema. (não: a versão do mysql é 5.7 e instalada via homebrew).

Hatip Aksunger
fonte
0

Também tive o mesmo problema: ocorre quando mesclo várias tabelas de dados para o esquema existente de outro esquema e exporto dados mesclados para um arquivo de script independente. Eu tentei alterar as estatísticas da coluna = 0, mas o resultado foi o seguinte,

C:\xampp\mysql\bin>mysqldump --column-statistics=0 --host=loalhost --user root --passwod
mysqldump: unknown variable 'column-statistics=0'

Então eu não tinha ajudado. Analiso o log do MySQL e descobri que

2019-01-21 11:31:30 1050 InnoDB: Warning: Using innodb_additional_mem_pool_size is DEPRECATED. This option may be removed in future releases, together with the option innodb_use_sys_malloc and with the InnoDB's internal memory allocator.
2019-01-21 11:31:30 4176 [Note] InnoDB: innodb_empty_free_list_algorithm has been changed to legacy because of small buffer pool size. In order to use backoff, increase buffer pool at least up to 20MB.

está reclamando do tamanho do tamanho innodb_buffer_pool_spool. Eu fiz isso para 24MB. Então funciona.

Rasike Abeyratne
fonte
0

Eu uso o XAMPP e o MySQL Workbench avisa sobre uma incompatibilidade de versão. Eu configurei o MySQL Workbench para apontar para o mysql.exe e o mysqldump.exe do XAMPP.

Vá para Editar -> Preferências -> Administração e defina o caminho para cada um.

Isso funciona pelo menos para a versão 8.0.14. Portanto, para outros, você pode evitar o uso da versão empacotada do mysql e mysqldump.

Dean Or
fonte