mysqldump jette: La table inconnue 'COLUMN_STATISTICS' dans information_schema (1109)

118

A chaque fois que j'essaie de créer un, mysqldumpj'obtiens l'erreur suivante:

$> 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)

Le résultat est un vidage incomplet. La chose étrange est que la même commande, exécutée à partir d'un autre hôte, fonctionne sans générer d'erreur. Quelqu'un a-t-il rencontré le même problème?

J'utilise mysql-client 8.0et j'essaie d'accéder à un 5-7serveur mysql - c'est peut-être pour ça?

chevallier
la source

Réponses:

169

Cela est dû à un nouvel indicateur activé par défaut dans mysqldump 8. Vous pouvez le désactiver en ajoutant --column-statistics = 0. La commande sera quelque chose comme:

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

Vérifiez ce lien pour plus d'informations. Pour désactiver les statistiques de colonne par défaut, vous pouvez ajouter

[mysqldump]
column-statistics=0

dans un fichier de configuration MySQL, tel que /etc/my.cnf ou ~ / .my.cnf.

cristhiank
la source
--databases <nom de la base de données> pour une base de données particulière
Mohhamad Hasham
@forthrin Answer modifié pour montrer comment rendre le changement permanent.
Andrew Schulman
2
Il existe également un paramètre dans MySQL Workbench: sous "Options avancées ...", dans la section "autre", il existe une colonne de statistiques définie sur "VRAI". Changez ceci à zéro comme suggéré de le désactiver.
Alex Barker
6
MySQLWorkbench v8.0.14 n'a pas ce paramètre. Ce que j’ai fait (sur un Mac), c’est de télécharger une ancienne version de MySQLWorkbench, d’ouvrir ce paquet (Afficher le contenu du paquet) et d’extraire sa version fournie de «mysqldump». J'ai ensuite modifié les préférences de MySQLWorkbench pour examiner cette version de 'mysqldump' au lieu de la sienne. L'exportation fonctionne très bien sans avoir à définir aucun indicateur. ref) bugs.mysql.com/bug.php?id=91640#c484427
Scott
1
Pour ceux qui utilisent DataGrip, vous pouvez cliquer avec le bouton droit sur le schéma dans la fenêtre Base de données, aller à "Vider avec 'mysqldump'", et ajouter l' --column-statistics=0argument à la liste des arguments générés dans la zone située au bas de la fenêtre contextuelle.
Travesty3
27

Pour ceux qui utilisent MySQL Workbench, un bouton "Options avancées" est disponible sur l'écran d'exportation des données. L'option "Utiliser les statistiques de colonne" peut être désactivée en réglant sur 0.

Je n'ai pas confirmé, mais il a été suggéré que les informations suivantes soient également vraies: Dans la version 8.0.14, il est manquant. Dans la version 8.0.16, cela est fait par défaut.

atjoedonahue
la source
7
Seule la version 8.0.13 et suivantes de MySQL Workbench dispose de cette option pour désactiver "Utiliser les statistiques de colonne".
Paul Deng
7
MySQL Workbench version 8.0.14 n'a pas cette option. On dirait qu'ils l'ont sorti.
Dean Ou le
3
En effet, bugs.mysql.com/bug.php?id=94294 devrait être de retour dans 8.0.16 ...
Jean-Christophe Meillaud Le
se passe toujours à 8.0.16
Amir Bar
Je peux confirmer que MySQLWorkbench v8.0.17 a corrigé le problème (MacOs). Il lançait cette erreur sur MySQLWorkbench version 8.0.12 et mis à niveau. J'ai remarqué que cela ne m'avertissait plus d'exporter des données à partir d'une base de données 5.X et ajoutait automatiquement --column-statistics=0la commande dans la commande d'exportation.
Elte156
20

J'ai passé toute la journée à chercher une solution et j'ai chanté ici juste pour partager la mienne.

Oui, cette erreur est probablement due à la différence de version.

Il suffit de télécharger l' archive ZIP MySQL 5.7 à partir d'ici: https://dev.mysql.com/downloads/mysql/ et de la décompresser, puis d'utiliser le fichier mysqldump.exe à partir de cet emplacement.

Si vous utilisez MySQL Workbench, vous devrez définir un chemin d'accès à l'outil mysqldump que vous avez téléchargé en sélectionnant Edition -> Préférences -> Administration (dans le volet de gauche).

J'espère que cela t'aides.

DodiX
la source
3
Pour les utilisateurs de Windows, ce fichier .exe était situé à l'adresse suivante:C:\Program Files\MySQL\MySQL Server 5.7\bin\mysqldump.exe
Jason
1
MySQLWorkbench v8.0.16 n'a toujours pas l'option permettant de définir l'indicateur column-statistics. Cette solution est sans doute la meilleure solution car elle permet de faire correspondre correctement les versions de MySQL en cas de problèmes futurs.
Kiksy
5

Pour faciliter cette réponse , vous pouvez renommer mysqldump, créer un script shell à sa place et appeler le renommé mysqldumpavec l’ --column-statistics=0argument. Par exemple:

Renommez mysqldump:

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

Enregistrez le script de shell suivant à sa place:

#!/bin/sh

_mysqldump --column-statistics=0 $@
pierlo
la source
1
Ceci est une excellente suggestion et fonctionne sous MacOSX avec Mysql Workbench. Toutefois, vous devez inclure le chemin d'accès complet à votre véritable exécutable mysqldump, sinon cela ne semble pas fonctionner. J'ai essayé ./ mais je ne fonctionnais toujours pas. En mettant le chemin complet et le Workbench a été en mesure de l'exécuter avec les statistiques marquées.
Andy D
4

Plus facile travail autour

Lorsque vous utilisez Mysql Workbench 8.0

  • Ouvrez l'onglet "Data Export"
  • Cliquez sur Options avancées entrez la description de l'image ici
  • Sous la rubrique Autre, définissez les statistiques de colonne sur 0 entrez la description de l'image ici
  • Exporter à nouveauentrez la description de l'image ici

Bonne chance!

Anson
la source
5
Je n'ai pas cette option dans la section "Autres"
JoRouss
@JoRouss Télécharger 8.0.13 downloads.mysql.com/archives/workbench peut - être la version .16 l'aura encore! Sinon, on utilise la ligne de commande :-)
François Breton le
J'ai fini par utiliser la suggestion @DodiX. Merci @ francois!
JoRouss le
La solution de contournement stupide jusqu'à la version 8.0.16 est terminée: dans les options avancées, cochez "forcer" pour que l'erreur soit ignorée. Bien sûr, cela ignorera toute autre erreur
Bostone
@Bostone, cette solution n'omet pas l'erreur.
Casper
0

Dans ma situation, j'utilise mac-OS. À propos, il y avait des [mysqldump] column-statistics=0champs dans le my.cnffichier qui est placé sous le /usr/local/etcrépertoire. La suppression de ce champ a résolu le problème. (pas: la version de mysql est 5.7 et installée via homebrew).

Hatip Aksunger
la source
0

J'ai également eu le même problème, il se produit lorsque je fusionne plusieurs tables de données dans le schéma existant à partir d'un autre schéma et que j'exporte les données fusionnées dans un fichier de script autonome. J'ai essayé de changer la colonne-statistiques = 0, mais le résultat suivait,

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

Donc je n'ai pas aidé. J'analyse le journal MySQL que j'ai trouvé

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.

il se plaint de la taille de innodb_buffer_pool_size. Je l'ai fait à 24MB. Alors ça marche.

Rasike Abeyratne
la source
0

J'utilise XAMPP et MySQL Workbench met en garde contre une incompatibilité de version. Je règle MySQL Workbench pour qu'il pointe vers les fichiers mysql.exe et mysqldump.exe de XAMPP.

Allez dans Edition -> Préférences -> Administration et définissez le chemin pour chacun.

Cela fonctionne au moins pour la version 8.0.14. Donc, pour d’autres, évitez d’utiliser la version fournie de mysql et mysqldump.

Doyen ou
la source