mysqldump genera: tabella sconosciuta "COLUMN_STATISTICS" in information_schema (1109)


118

Ogni volta che provo a fare un mysqldumpottengo il seguente errore:

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

Il risultato è un dump non completo. La cosa strana è che lo stesso comando, eseguito da un altro host, funziona senza generare errori. Qualcuno ha riscontrato lo stesso problema?

Sto usando mysql-client 8.0e provo ad accedere a un 5-7server mysql - forse questo è il motivo?

Risposte:


169

Ciò è dovuto a un nuovo flag abilitato per impostazione predefinita in mysqldump 8. È possibile disabilitarlo aggiungendo --column-statistics = 0. Il comando sarà simile a:

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

Controlla questo link per maggiori informazioni. Per disabilitare le statistiche delle colonne per impostazione predefinita, è possibile aggiungere

[mysqldump]
column-statistics=0

in un file di configurazione MySQL, come /etc/my.cnf o ~ / .my.cnf.


--database <nome database> per un determinato database
Mohhamad Hasham

@forthrin Risposta modificata per mostrare come rendere permanente la modifica.
Andrew Schulman,

2
C'è anche un'impostazione in MySQL Workbench: in "Opzioni avanzate ...", nella sezione "altro", c'è una colonna-statistiche che è impostata su "TRUE". Cambia questo a zero come suggerire di disabilitare.
Alex Barker,

6
MySQLWorkbench v8.0.14 non ha questa impostazione. Quello che ho fatto (su un Mac) è stato scaricare una versione precedente di MySQLWorkbench, aprire quel pacchetto (Mostra contenuto pacchetto) ed estrarre la versione in bundle di "mysqldump". Ho quindi modificato le preferenze di MySQLWorkbench per esaminare questa versione di "mysqldump" anziché la sua. L'esportazione funziona bene senza dover impostare alcun flag. ref) bugs.mysql.com/bug.php?id=91640#c484427
Scott

1
Per chiunque utilizzi DataGrip, è possibile fare clic con il pulsante destro del mouse sullo schema nella finestra del database, andare su "Scarica con 'mysqldump" e aggiungere l' --column-statistics=0argomento all'elenco degli argomenti generato nella casella nella parte inferiore della finestra popup.
Travesty3

27

Per coloro che utilizzano MySQL Workbench, c'è un pulsante "Opzioni avanzate" nella schermata di esportazione dei dati. L'opzione "Usa statistiche colonna" può essere disabilitata impostando su 0.

Non ho confermato, ma sono state suggerite anche le seguenti informazioni: Nella versione 8.0.14 manca. Nella versione 8.0.16 lo fa per impostazione predefinita.


7
Solo MySQL Workbench versione 8.0.13 e successive ha questa opzione per disabilitare "Usa statistiche colonna".
Paul Deng,

7
MySQL Workbench versione 8.0.14 non ha questa opzione. Sembra che lo abbiano eliminato.
Decano o

3
Infatti, bugs.mysql.com/bug.php?id=94294 , dovrebbe essere di nuovo in 8.0.16 ...
Jean-Christophe Meillaud,

succede ancora alle 8.0.16
Amir Bar il

Posso confermare che MySQLWorkbench v8.0.17 ha risolto il problema (MacOs). Stava generando questo errore su MySQLWorkbench v8.0.12 e aggiornato. Ho notato che non mi avvertiva più dell'esportazione di dati da un DB 5.X e aggiungevo automaticamente --column-statistics=0il comando di esportazione.
Elte156,

20

Ho trascorso l'intera giornata alla ricerca di una soluzione, e ho cantato qui solo per condividere la mia.

Sì, probabilmente questo errore è dovuto alla differenza di versione.

Basta scaricare MySQL 5.7 ZIP Archive da qui: https://dev.mysql.com/downloads/mysql/ e decomprimerlo, quindi utilizzare il file mysqldump.exe da lì.

Se stai usando MySQL Workbench, dovrai impostare un percorso per lo strumento mysqldump scaricato andando su Modifica -> Preferenze -> Amministrazione (dal riquadro a sinistra).

Spero che sia di aiuto.


3
Per gli utenti Windows, questo .exe si trovava a:C:\Program Files\MySQL\MySQL Server 5.7\bin\mysqldump.exe
Jason,

1
In MySQLWorkbench v8.0.16 manca ancora l'opzione per impostare il flag delle statistiche delle colonne. Questa soluzione è senza dubbio la migliore risposta in quanto consente l'adeguata corrispondenza delle versioni di MySQL in caso di problemi futuri.
Kiksy,

5

Per facilitare questa risposta , puoi rinominare mysqldump, creare uno script shell al suo posto e chiamare il rinominato mysqldumpcon l' --column-statistics=0argomento. Per esempio:

Rinomina mysqldump:

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

Salva il seguente script di shell al suo posto:

#!/bin/sh

_mysqldump --column-statistics=0 $@

1
Questo è un ottimo suggerimento e funziona in MacOSX con Mysql Workbench, tuttavia devi includere il percorso completo del tuo vero eseguibile mysqldump o non sembra funzionare. Ho provato ./ ma ancora non funzionerebbe. Mettendo il percorso completo e il Workbench è stato in grado di eseguirlo con le statistiche contrassegnate.
Andy D,

4

Il lavoro più semplice

Quando si utilizza Mysql Workbench 8.0

  • Apri la scheda "Esportazione dati"
  • Fai clic su Opzioni avanzate inserisci qui la descrizione dell'immagine
  • Sotto l'intestazione Altro, imposta le statistiche delle colonne su 0 inserisci qui la descrizione dell'immagine
  • Esporta di nuovoinserisci qui la descrizione dell'immagine

Buona fortuna!


5
Non ho questa opzione nella sezione "Altro"
JoRouss

@JoRouss Download 8.0.13 downloads.mysql.com/archives/workbench forse la versione .16 l'avrà di nuovo! Altrimenti usiamo la riga di comando :-)
François Breton il

Ho finito per usare il suggerimento @DodiX. Grazie @Francois!
JoRouss

Stupida soluzione fino all'uscita 8.0.16: in Opzioni avanzate selezionare "force" in modo che l'errore venga ignorato. Naturalmente questo ignorerà qualsiasi altro errore
Bostone il

@Bostone, questa soluzione non omette l'errore.
Casper


0

Nella mia situazione, sto usando mac-OS. A proposito, c'erano dei [mysqldump] column-statistics=0campi nel my.cnffile che sono stati inseriti nella /usr/local/etcdirectory. L'eliminazione di quel campo ha risolto il problema. (no: la versione mysql è 5.7 e installata tramite homebrew).


0

Ho anche avuto lo stesso problema, si verifica quando unisco più tabelle di dati allo schema esistente da altri schemi ed esporto i dati uniti in file di script autonomo. Ho provato a cambiare la colonna-statistics = 0, ma il risultato stava seguendo,

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

Quindi non ho aiutato. Analizzo il log di MySQL che ho scoperto

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.

si lamenta della dimensione di innodb_buffer_pool_size. Sono arrivato a 24 MB. Quindi funziona.


0

Uso XAMPP e MySQL Workbench avvisa di una mancata corrispondenza della versione. Ho impostato MySQL Workbench in modo che punti a mysql.exe e mysqldump.exe di XAMPP.

Vai a Modifica -> Preferenze -> Amministrazione e imposta il percorso per ciascuno.

Questo funziona almeno per la versione 8.0.14. Quindi per altri potresti voler evitare di usare la versione in bundle di mysql e mysqldump.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.