mysqldump wirft: Unbekannte Tabelle 'COLUMN_STATISTICS' in information_schema (1109)


118

Jedes Mal, wenn ich versuche, eine zu machen, mysqldumperhalte ich die folgende Fehlermeldung:

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

Das Ergebnis ist ein Speicherauszug, der nicht vollständig ist. Das Seltsame ist, dass derselbe Befehl, der von einem anderen Host ausgeführt wird, fehlerfrei funktioniert. Hat jemand das gleiche Problem erlebt?

Ich benutze MySQL-Client 8.0und versuche, auf einen MySQL- 5-7Server zuzugreifen - vielleicht ist das der Grund?

Antworten:


169

Dies liegt an einem neuen Flag, das standardmäßig in mysqldump 8 aktiviert ist. Sie können es deaktivieren, indem Sie --column-statistics = 0 hinzufügen. Der Befehl wird ungefähr so ​​lauten:

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

Überprüfen Sie diesen Link für weitere Informationen. Um die Spaltenstatistik standardmäßig zu deaktivieren, können Sie hinzufügen

[mysqldump]
column-statistics=0

in eine MySQL-Konfigurationsdatei wie /etc/my.cnf oder ~ / .my.cnf.


--Datenbanken <Datenbankname> für eine bestimmte Datenbank
Mohhamad Hasham

@forthrin Antwort bearbeitet, um zu zeigen, wie die Änderung dauerhaft wird.
Andrew Schulman

2
Es gibt auch eine Einstellung in MySQL Workbench: Unter "Advanced Options ..." im Abschnitt "other" gibt es eine Spaltenstatistik, die auf "TRUE" gesetzt ist. Ändern Sie diesen Wert auf Null, um ihn zu deaktivieren.
Alex Barker

6
MySQLWorkbench v8.0.14 verfügt nicht über diese Einstellung. Ich habe (auf einem Mac) eine ältere Version von MySQLWorkbench heruntergeladen, dieses Paket geöffnet (Paketinhalt anzeigen) und die mitgelieferte Version von 'mysqldump' heruntergeladen. Ich habe dann die MySQLWorkbench-Einstellungen bearbeitet, um diese Version von 'mysqldump' anstelle der eigenen zu betrachten. Der Export funktioniert einwandfrei, ohne dass irgendwelche Flags gesetzt werden müssen. ref) bugs.mysql.com/bug.php?id=91640#c484427
Scott

1
Für jeden, der DataGrip verwendet, können Sie mit der rechten Maustaste auf das Schema im Datenbankfenster klicken, zu "Dump with 'mysqldump'" gehen und das --column-statistics=0Argument zur Liste der generierten Argumente im Feld am unteren Rand des Popup-Fensters hinzufügen .
Travesty3

27

Für diejenigen, die MySQL Workbench verwenden, gibt es eine Schaltfläche "Erweiterte Optionen" auf dem Bildschirm "Datenexport". Die Option "Spaltenstatistik verwenden" kann durch Setzen auf 0 deaktiviert werden.

Ich habe es nicht bestätigt, aber es wurde vorgeschlagen, dass die folgenden Informationen ebenfalls zutreffen: In Version 8.0.14 fehlt sie. In Version 8.0.16 wird dies standardmäßig durchgeführt.


7
Nur MySQL Workbench ab Version 8.0.13 hat diese Option, um "Spaltenstatistik verwenden" zu deaktivieren.
Paul Deng

7
MySQL Workbench Version 8.0.14 verfügt nicht über diese Option. Sieht so aus, als hätten sie es rausgenommen.
Dean oder

3
In der Tat sollte bugs.mysql.com/bug.php?id=94294 in 8.0.16 zurück sein ...
Jean-Christophe Meillaud

noch um 8.0.16 Uhr passieren
Amir Bar

Ich kann bestätigen, dass MySQLWorkbench v8.0.17 das Problem behoben hat (MacOs). Dieser Fehler wurde auf MySQLWorkbench v8.0.12 ausgelöst und aktualisiert. Mir ist aufgefallen, dass ich nicht mehr vor dem Exportieren von Daten aus einer 5.X-Datenbank gewarnt wurde, und --column-statistics=0der Befehl im Export wurde automatisch angehängt .
Elte156

20

Ich habe den ganzen Tag nach einer Lösung gesucht und hier gesungen, nur um meine zu teilen.

Ja, wahrscheinlich ist dieser Fehler auf Versionsunterschiede zurückzuführen.

Laden Sie einfach das MySQL 5.7 ZIP-Archiv von hier herunter : https://dev.mysql.com/downloads/mysql/ und entpacken Sie es. Verwenden Sie dann die Datei mysqldump.exe von dort.

Wenn Sie MySQL Workbench verwenden, müssen Sie einen Pfad zu dem von Ihnen heruntergeladenen mysqldump-Tool festlegen, indem Sie auf Bearbeiten -> Einstellungen -> Verwaltung (im linken Bereich) klicken.

Hoffe das hilft.


3
Für Windows-Benutzer befand sich diese .exe unter:C:\Program Files\MySQL\MySQL Server 5.7\bin\mysqldump.exe
Jason

1
In MySQLWorkbench Version 8.0.16 fehlt immer noch die Option zum Setzen des Spaltenstatistik-Flags. Diese Lösung ist wohl die beste Antwort, da sie den korrekten Abgleich von MySQL-Versionen bei zukünftigen Problemen ermöglicht.
Kiksy

5

Um diese Antwort zu vereinfachen, können Sie sie umbenennen mysqldump, ein Shell-Skript an dessen Stelle erstellen und das mysqldumpmit dem --column-statistics=0Argument umbenannte aufrufen . Z.B:

Benenne mysqldump um:

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

Speichern Sie das folgende Shell-Skript an seiner Stelle:

#!/bin/sh

_mysqldump --column-statistics=0 $@

1
Dies ist ein großartiger Vorschlag und funktioniert unter MacOSX mit der MySQL Workbench. Sie müssen jedoch den vollständigen Pfad zu Ihrer eigentlichen ausführbaren mysqldump-Datei angeben, da dies anscheinend nicht funktioniert. Ich habe es versucht, würde aber immer noch nicht funktionieren. Geben Sie den vollständigen Pfad ein, und die Workbench konnte ihn mit deaktivierter Statistik ausführen.
Andy D

4

Einfachste Lösung

Bei Verwendung von Mysql Workbench 8.0

  • Öffnen Sie die Registerkarte "Datenexport"
  • Klicken Sie auf Erweiterte Optionen Bildbeschreibung hier eingeben
  • Setzen Sie unter der Überschrift Andere die Spaltenstatistik auf 0 Bildbeschreibung hier eingeben
  • Wieder exportierenBildbeschreibung hier eingeben

Viel Glück!


5
Ich habe diese Option nicht im Abschnitt "Andere"
JoRouss

@JoRouss Download 8.0.13 downloads.mysql.com/archives/workbench .16 Version wird es wieder haben! Ansonsten benutzen wir die Kommandozeile :-)
François Breton

Am Ende habe ich den @ DodiX-Vorschlag verwendet. Vielen Dank @Francois!
JoRouss

Dumme Problemumgehung bis 8.0.16 abgelaufen ist: Aktivieren Sie in den erweiterten Optionen "force", damit der Fehler ignoriert wird. Natürlich wird dies jeden anderen Fehler ignorieren
Bostone

@Bostone, diese Lösung behebt den Fehler nicht.
Casper


0

In meiner Situation verwende ich Mac-OS. Übrigens gab es [mysqldump] column-statistics=0Felder in der my.cnfDatei, die unter dem /usr/local/etcVerzeichnis platziert ist. Das Löschen dieses Felds behebt das Problem. (nicht: mysql version ist 5.7 und wird via homebrew installiert).


0

Ich hatte auch das gleiche Problem, es tritt auf, wenn ich mehrere Datentabellen mit dem vorhandenen Schema aus einem anderen Schema zusammenführe und zusammengeführte Daten in eine eigenständige Skriptdatei exportiere. Ich habe versucht, die Spaltenstatistik = 0 zu ändern, aber das Ergebnis war wie folgt:

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

Also hatte ich nicht geholfen. Ich analysiere das MySQL-Protokoll, das ich gefunden habe

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.

Es beschwert sich über die Größe des innodb_buffer_pool_size. Ich habe es auf 24MB geschafft. Dann klappt es.


0

Ich verwende XAMPP und MySQL Workbench warnt vor einem Versionskonflikt. Ich habe MySQL Workbench so eingestellt, dass es auf die XAMPP-Dateien mysql.exe und mysqldump.exe zeigt.

Gehen Sie zu Bearbeiten -> Einstellungen -> Verwaltung und legen Sie den jeweiligen Pfad fest.

Dies funktioniert zumindest für Version 8.0.14. Für andere sollten Sie daher die mitgelieferte Version von mysql und mysqldump vermeiden.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.