mysqldump throws: tabla desconocida 'COLUMN_STATISTICS' en information_schema (1109)

118

Cada vez que intento hacer un mysqldumpme sale el siguiente error:

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

El resultado es un volcado que no está completo. Lo extraño es que el mismo comando, ejecutado desde otro host, funciona sin arrojar ningún error. ¿Alguien experimentó el mismo problema?

Estoy usando mysql-client 8.0e intento acceder a un 5-7servidor mysql , ¿tal vez esa es la razón?

chevallier
fuente

Respuestas:

169

Esto se debe a un nuevo indicador que está habilitado de manera predeterminada en mysqldump 8. Puede deshabilitarlo agregando --column-statistics = 0. El comando será algo como:

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

Consulte este enlace para más información. Para deshabilitar las estadísticas de columna de forma predeterminada, puede agregar

[mysqldump]
column-statistics=0

a un archivo de configuración de MySQL, como /etc/my.cnf o ~ / .my.cnf.

cristhiank
fuente
--databases <nombre de la base de datos> para una base de datos particular
Mohhamad Hasham
@forthrin Respuesta editada para mostrar cómo hacer que el cambio sea permanente.
Andrew Schulman
2
También hay una configuración en MySQL Workbench: en "Opciones avanzadas ...", en la sección "otro", hay una estadística de columna que se establece en "VERDADERO". Cambie esto a cero como sugerencia para deshabilitar.
Alex Barker
66
MySQLWorkbench v8.0.14 no tiene esa configuración. Lo que hice (en una Mac) fue descargar una versión anterior de MySQLWorkbench, abrir ese paquete (Mostrar contenido del paquete) y sacar su versión incluida de 'mysqldump'. Luego edité las preferencias de MySQLWorkbench para ver esta versión de 'mysqldump' en lugar de la suya. Exportar funciona bien sin tener que establecer ningún indicador. ref) bugs.mysql.com/bug.php?id=91640#c484427
Scott
1
Para cualquiera que use DataGrip, puede hacer clic con el botón derecho en el esquema en la ventana Base de datos, ir a "Volcar con 'mysqldump'" y agregar el --column-statistics=0argumento a la lista de argumentos generados en el cuadro en la parte inferior de la ventana emergente.
Travesty3
27

Para aquellos que usan MySQL Workbench, hay un botón "Opciones avanzadas" en la pantalla Exportación de datos. La opción "Usar estadísticas de columna" puede deshabilitarse configurando a 0.

No lo he confirmado, pero se ha sugerido que la siguiente información también es cierta: en la versión 8.0.14 falta. En la Versión 8.0.16 está haciendo esto por defecto.

atjoedonahue
fuente
77
Solo MySQL Workbench versión 8.0.13 y posterior tiene esta opción para deshabilitar "Usar estadísticas de columna".
Paul Deng
77
MySQL Workbench versión 8.0.14 no tiene esta opción. Parece que lo sacaron.
Dean o el
3
De hecho, bugs.mysql.com/bug.php?id=94294 , debería estar de vuelta en 8.0.16 ...
Jean-Christophe Meillaud
todavía sucede a las 8.0.16
Amir Bar
Puedo confirmar que MySQLWorkbench v8.0.17 solucionó el problema (MacOs). Estaba lanzando este error en MySQLWorkbench v8.0.12 y actualizado. Noté que ya no me advertía sobre la exportación de datos desde una base de datos 5.X y agregué automáticamente --column-statistics=0el comando de exportación.
Elte156
20

Pasé todo el día buscando una solución, y chamusqué aquí solo para compartir la mía.

Sí, probablemente este error se deba a la diferencia de versiones.

Simplemente descargue el archivo ZIP MySQL 5.7 desde aquí: https://dev.mysql.com/downloads/mysql/ y descomprímalo, luego use el archivo mysqldump.exe desde allí.

Si está utilizando MySQL Workbench, deberá establecer una ruta a la herramienta mysqldump que descargó yendo a Editar -> Preferencias -> Administración (desde el panel izquierdo).

Espero que esto ayude.

DodiX
fuente
3
Para los usuarios de Windows, este .exe se encuentra en:C:\Program Files\MySQL\MySQL Server 5.7\bin\mysqldump.exe
Jason
1
MySQLWorkbench v8.0.16 aún no tiene la opción de establecer el indicador de estadísticas de columna. Podría decirse que esta solución es la mejor respuesta, ya que permite la correspondencia adecuada de las versiones de MySQL en caso de problemas futuros.
Kiksy
5

Para facilitar esta respuesta , puede cambiar el nombre mysqldump, crear un script de shell en su lugar y llamar a los renombrados mysqldumpcon el --column-statistics=0argumento. P.ej:

Renombrar mysqldump:

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

Guarde el siguiente script de shell en su lugar:

#!/bin/sh

_mysqldump --column-statistics=0 $@
pierlo
fuente
1
Esta es una gran sugerencia y funciona en MacOSX con Mysql Workbench, sin embargo, debe incluir la ruta completa a su ejecutable mysqldump real o no parece funcionar. Intenté ./ pero aún no funcionaba. Poniendo en el camino completo y el Workbench pudo ejecutarlo con las estadísticas marcadas.
Andy D
4

El trabajo más fácil alrededor

Cuando use Mysql Workbench 8.0

  • Abra la pestaña "Exportación de datos"
  • Haga clic en Opciones avanzadas ingrese la descripción de la imagen aquí
  • Bajo el encabezado Otro, establezca las estadísticas de columna en 0 ingrese la descripción de la imagen aquí
  • Exportar de nuevoingrese la descripción de la imagen aquí

¡La mejor de las suertes!

anson
fuente
55
No tengo esta opción en la sección "Otros"
JoRouss
@JoRouss Descargar 8.0.13 downloads.mysql.com/archives/workbench ¡ quizás la versión .16 lo tendrá nuevamente! De lo contrario, usamos la línea de comando :-)
François Breton
Terminé usando la sugerencia @DodiX. Gracias @Francois!
JoRouss
Solución estúpida hasta que 8.0.16 esté fuera: en Opciones avanzadas, marque "forzar" para que se ignore el error. Por supuesto, esto ignorará cualquier otro error
Bostone
@Bostone, esta solución no omite el error.
Casper
0

En mi situación, estoy usando mac-OS. Por cierto, había [mysqldump] column-statistics=0campos en el my.cnfarchivo que se coloca en el /usr/local/etcdirectorio. Eliminar ese campo solucionó el problema. (no: la versión mysql es 5.7 e instalada a través de homebrew).

Hatip Aksunger
fuente
0

También tuve el mismo problema, ocurre cuando fusiono varias tablas de datos con el esquema existente desde otro esquema y exporto datos combinados a un archivo de script independiente. Intenté cambiar la estadística de columna = 0, pero el resultado fue el siguiente,

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

Entonces no había ayudado. Analizo el registro de MySQL encontré 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.

se queja del tamaño de innodb_buffer_pool_size. Lo hice a 24MB. Entonces funciona.

Rasike Abeyratne
fuente
0

Yo uso XAMPP y MySQL Workbench advierte sobre una discrepancia de versión. Configuré MySQL Workbench para que apunte a mysql.exe y mysqldump.exe de XAMPP.

Vaya a Editar -> Preferencias -> Administración y configure la ruta para cada uno.

Esto funciona al menos para la versión 8.0.14. Entonces, para otros, es posible que desee evitar el uso de la versión incluida de mysql y mysqldump.

Dean Or
fuente