Выдает mysqldump: неизвестная таблица 'COLUMN_STATISTICS' в информационной схеме (1109)


118

Каждый раз, когда я пытаюсь сделать, mysqldumpя получаю следующую ошибку:

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

Результатом является дамп, который не завершен. Странно то, что та же команда, выполненная с другого хоста, работает без каких-либо ошибок. Кто-то испытывал такую ​​же проблему?

Я использую mysql-клиент 8.0и пытаюсь получить доступ к 5-7серверу mysql - может, в этом причина?

Ответы:


169

Это связано с новым флагом, который по умолчанию включен в mysqldump 8. Вы можете отключить его, добавив --column-statistics = 0. Команда будет что-то вроде:

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

Проверьте эту ссылку для получения дополнительной информации. Чтобы отключить статистику столбцов по умолчанию, вы можете добавить

[mysqldump]
column-statistics=0

в конфигурационный файл MySQL, такой как /etc/my.cnf или ~ / .my.cnf.


--databases <имя базы данных> для конкретной базы данных
Мохамад Хашам

@forthrin Ответ отредактирован, чтобы показать, как сделать изменение постоянным.
Эндрю Шульман

2
В MySQL Workbench также есть настройка: в разделе «Дополнительные параметры ...» в разделе «Прочие» есть статистика столбцов, которая имеет значение «ИСТИНА». Измените это на ноль, как предлагают отключить.
Алекс Баркер

6
MySQLWorkbench v8.0.14 не имеет этой настройки. Что я сделал (на Mac), так это скачал более старую версию MySQLWorkbench, открыл этот пакет (Показать содержимое пакета) и вытащил его связанную версию «mysqldump». Затем я отредактировал настройки MySQLWorkbench, чтобы посмотреть на эту версию mysqldump вместо ее собственной. Экспорт работает просто отлично, без необходимости устанавливать какие-либо флаги. ref) bugs.mysql.com/bug.php?id=91640#c484427
Скотт

1
Для тех, кто использует DataGrip, вы можете щелкнуть правой кнопкой мыши схему в окне базы данных, перейти к «Дамп с помощью« mysqldump »» и добавить --column-statistics=0аргумент в сгенерированный список аргументов в поле в нижней части всплывающего окна.
Travesty3

27

Для тех, кто использует MySQL Workbench, на экране «Экспорт данных» есть кнопка «Дополнительные параметры». Опцию «Использовать статистику столбцов» можно отключить, установив в 0.

Я не подтвердил, но следующая информация была предложена, чтобы быть правдой: в версии 8.0.14 она отсутствует. В версии 8.0.16 это делается по умолчанию.


7
Только MySQL Workbench версии 8.0.13 и более поздней имеет эту опцию, чтобы отключить «Использовать статистику столбцов».
Пол Дэн

7
MySQL Workbench версии 8.0.14 не имеет этой опции. Похоже, они вынули это.
Дин или

3
Действительно, bugs.mysql.com/bug.php?id=94294 должен вернуться в 8.0.16 ...
Жан-Кристоф Мейо

все еще случается в 8.0.16
Амир Бар

Я могу подтвердить, что MySQLWorkbench v8.0.17 исправил проблему (MacOs). Он выдавал эту ошибку на MySQLWorkbench v8.0.12 и обновлялся. Я заметил, что он больше не предупреждает меня об экспорте данных из БД 5.X и автоматически добавляет --column-statistics=0команду экспорта в команду.
Elte156

20

Я провел весь день в поисках решения и подпал здесь, чтобы поделиться своим.

Да, возможно, эта ошибка связана с разницей версий.

Просто скачайте ZIP-архив MySQL 5.7 отсюда: https://dev.mysql.com/downloads/mysql/ и распакуйте его, а затем используйте файл mysqldump.exe оттуда.

Если вы используете MySQL Workbench, вам нужно будет указать путь к загруженному инструменту mysqldump, перейдя в « Правка» -> «Настройки» -> «Администрирование» (из левой панели).

Надеюсь это поможет.


3
Для пользователей Windows этот .exe был расположен по адресу:C:\Program Files\MySQL\MySQL Server 5.7\bin\mysqldump.exe
Jason

1
В MySQLWorkbench v8.0.16 по-прежнему отсутствует опция для установки флага статистики столбцов. Это решение, пожалуй, лучший ответ, поскольку оно позволяет правильно сопоставить версии MySQL в случае будущих проблем.
Кикси

5

Для того, чтобы этот ответ проще, вы можете переименовать mysqldump, сделать скрипт на своем месте и вызвать переименованы mysqldumpс --column-statistics=0аргументом. Например:

Переименуйте mysqldump:

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

Сохраните следующий сценарий оболочки на его месте:

#!/bin/sh

_mysqldump --column-statistics=0 $@

1
Это отличное предложение и работает в MacOSX с Mysql Workbench, однако вы должны указать полный путь к реальному исполняемому файлу mysqldump, иначе он не работает. Я пытался ./ но все равно не сработает. Ввод полного пути и Workbench смог запустить его с отключенной статистикой.
Энди Д

4

Легкая работа вокруг

При использовании Mysql Workbench 8.0

  • Откройте вкладку «Экспорт данных»
  • Нажмите Дополнительные параметры введите описание изображения здесь
  • Под заголовком Другое установите статистику столбца на 0 введите описание изображения здесь
  • Экспорт сновавведите описание изображения здесь

Удачи!


5
У меня нет этой опции в разделе «Другое»
JoRouss

@JoRouss Download 8.0.13 downloads.mysql.com/archives/workbench, возможно, в версии .16 снова будет! В противном случае мы используем командную строку :-)
Франсуа Бретон

Я закончил тем, что использовал предложение @DodiX. Спасибо @Francois!
JoRouss

Глупый обходной путь до выхода 8.0.16: в расширенных настройках отметьте «force», чтобы ошибка игнорировалась. Конечно, это будет игнорировать любую другую ошибку
Бостоне

@Bostone, это решение не пропускает ошибку.
Каспер

2

Для macOS вам нужна более старая версия (8.0.13), чтобы увидеть «статистику столбцов», потому что я тестирую версии 8.0.14 и 8.0.15, и обе не показывают «статистику столбцов».

Итак, для настройки «столбца-статистики» используйте версию 8.0.13 https://downloads.mysql.com/archives/get/file/mysql-workbench-community-8.0.13-macos-x86_64.dmg


0

В моей ситуации я использую mac-OS. Кстати, [mysqldump] column-statistics=0в my.cnfфайле есть поля, которые находятся в /usr/local/etcкаталоге. Удаление этого поля устранило проблему. (не: версия mysql 5.7 и установлена ​​через homebrew).


0

У меня также была такая же проблема, она возникает, когда я объединяю несколько таблиц данных в существующую схему из другой схемы и экспортирую объединенные данные в автономный файл сценария. Я попытался изменить столбец-статистика = 0, но результат был следующий,

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

Так что я не помог. Я анализирую журнал MySQL, я обнаружил, что

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.

его жалобы на размер innodb_buffer_pool_size. Я сделал это до 24 МБ. Тогда это работает.


0

Я использую XAMPP и MySQL Workbench предупреждает о несоответствии версий. Я установил MySQL Workbench так, чтобы он указывал на mysql.exe и mysqldump.exe на XAMPP.

Зайдите в Edit -> Preferences -> Administration и установите путь для каждого.

Это работает по крайней мере для версии 8.0.14. Так что для других вы можете не использовать пакетную версию mysql и mysqldump.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.