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

Каждый раз, когда я пытаюсь сделать 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 и попробуйте получить доступ к MySQL 5-7 сервер - может в этом причина?

23 ответа

Решение

Это связано с новым флагом, который по умолчанию включен в 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.

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

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

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

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

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

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

Я знаю, что опаздываю на вечеринку, но это сводило меня с ума. Если вы хотите использовать последнюю версию MySQL Workbench (попробовали новейшую на сегодняшний день MySQL Workbench 8.0.20), вы можете исправить этот файл:

      plugins/wb_admin_export_options.py

в macOS: (/Applications/MySQLWorkbench.app/Contents/Resources/plugins/wb_admin_export_options.py) Замена этой строки:

        "column-statistics":["Writing ANALYZE TABLE statements to generate statistics histograms.", "FALSE", "BOOL", ("8.0.2", None)]

с этим:

      "column-statistics":["Writing ANALYZE TABLE statements to generate statistics histograms (set 0 to disable).", "1", "INT", (None, None)]

Затем удалите .pyo:

rm /Applications/MySQLWorkbench.app/Contents/Resources/plugins/wb_admin_export_options.pyo

Наконец, снова перезагрузите Workbench и на странице «Экспорт данных» нажмите «Дополнительные параметры...», и вы снова увидите параметр статистики столбцов (установите 0, чтобы отключить, и нажмите кнопку «Возврат»).

Примечание: скачать пропатченный файл можно из этого Gist .

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

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

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

Удачи!

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

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

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

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

#!/bin/sh

_mysqldump --column-statistics=0 $@

У меня возникла эта проблема при использовании последней рабочей среды MySQL (8.0.23) в OSX (11.1) с mariadb. Я решил эту проблему, выбрав версию mysqldump, найденную в пакете mariadb.

/usr/local/mariadb/mariadb-10.1.37-osx10.13-x86_64/bin/mysqldump

В дополнение к Pierlo /questions/400392/vyidaet-mysqldump-neizvestnaya-tablitsa-columnstatistics-v-informatsionnoj-sheme/721053#721053

В MySQL Workbench есть возможность установить путь к исполняемому файлу mysqldump. (Правка - Настройки - Администрирование)

Таким образом, вы можете создать файл.cmd (в Windows) или.sh (в Linux или Mac) следующим образом:

mysqldump_nostatistics.cmd:

 @ECHO OFF
 "C:\Program Files\MySQL\MySQL Workbench 8.0 CE\mysqldump.exe" %*  --column-statistics=0

mysqldump_nostatistics.sh:

#!/bin/sh

_mysqldump $@ --column-statistics=0

Обратите внимание на порядок параметров (он отличается от порядка Pierlo): выполненная команда dump включает (или может включать) --defaults-file=вариант, и это должен быть первый параметр.

Также требуется отключение эха, иначе рабочая среда не сможет правильно проанализировать вывод команды.

Здесь выше есть несколько ответов, касающихся переименования двоичного файла mysqldump и создания сценария-оболочки. Это ужасный подход.

Правильный метод (в bash) — использовать псевдоним команды в вашем .bashrc.

      alias mysqldump="mysqldump --column-statistics=0"

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

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

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

Для 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

Для тех, кто использует DBeaver, проверьте, что локальный клиент настроен на создание дампа. См. следующие изображения для справки:

Доступ к выбору локальных клиентов:

Доступны локальные клиенты:

При использовании серверной части MariaDB с MySQL Workbench 8.0.31 CE необходимо загрузить собственные двоичные файлы MariaDB для вашей системы с и указать их в MySQL Workbench.

Например, если вы используете 64-битную ОС Microsoft Windows, выполните следующие действия:

  1. Перейти https://mariadb.com/downloads/community/https://mariadb.com/downloads/community/
  2. На странице выше выберите свою операционную систему.
  3. Сервер сообщества -> Verison (последняя общедоступная версия) -> ОС (64-разрядная версия MS Windows) и нажмите «Загрузить».
  4. Запустите только что загруженный экран установки и убедитесь, что «Сервер MariaDB -> Клиентские программы» включен.
  5. Запустите MySQL Workbench
  6. Выберите меню: Редактировать -> Настройки...
  7. В левом столбце выберите «Администрирование».
  8. Обновите «Путь к инструменту mysqldump:» на C:\Program Files\MariaDB 10.10\bin\mariadb-dump.exe.
  9. Обновите «Путь к инструменту mysql:» на C:\Program Files\MariaDB 10.10\bin\mariadb.exe.

Больше никаких ошибок статистики производительности или любых других проблем, связанных с MySQL и MariaDB.

Это было опубликовано для дальнейшего использования.

В MySQL Workbench версии 8.0.14 у вас нет возможности отключить column-statistics

Вы можете сделать это в версии 8.0.13.

Но у вас есть возможность сделать это, включив delete-master-logs в версии 8.0.22

  • --delete-master-logs имеет тот же эффект, что и RESET MASTER Команда SQL.
  • RESET MASTERудаляет все двоичные файлы журнала, перечисленные в индексном файле, сбрасывает индексный файл двоичного журнала, чтобы он был пустым, и создает новый двоичный файл журнала. Этот оператор предназначен для использования только при первом запуске мастера.

В зависимости от вашей ситуации вы можете избавиться оти установитьвместо. Это устраняет новую функцию, представленную в MySQL 8.

Я столкнулся с той же проблемой с последней версией MySQL Workbench, я решил ее с помощью командной строки mysqldump.

      C:\Program Files\MySQL\MySQL Workbench 8.0 CE\mysqldump --column-statistics=0  --user=USERNAME --host=REMOTE_HOST --protocol=tcp --port=3306 --default-character-set=utf8 DATABASE_NAME > c:\temp\dump.sql --password

Замените USERNAME, REMOTE_HOST, DATABASE_NAME своими именами.

В MySQL Workbench 8.0.31 на вкладке «Дополнительные параметры » теперь существует новая опция « Принудительно », используйте ее, чтобы пропустить ошибки, подобные упомянутым выше.

В macOS я исправил это, переопределив встроенный mysqldump:

  1. Установите mariadb, напримерbrew install mariadb
  2. Перейдите в MySQLWorkbench > Настройки > Администрирование.
  3. Установите путь mysqldump к тому, который вы только что установили, например/opt/homebrew/bin/mysqldump

Примечание: чтобы найти полный путь к mysqldump, вы можете запуститьwhich mysqldumpв вашем терминале.

Для пользователей Ansible используйте:

      mysql_db:
 ...
 dump_extra_args: --column-statistics=0

В моем случае он игнорирует ~/.my.cnf и /etc/my.cnf.

У меня также была такая же проблема, она возникает, когда я объединяю несколько таблиц данных в существующую схему из другой схемы и экспортирую объединенные данные в автономный файл сценария. Я попытался изменить столбец-статистика =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 МБ. Тогда это работает.

Скопируйте команду mysqldump из окна вывода, удалите часть файла по умолчанию и добавьте--column-statistics=0с другим вариантом

Откройте командное окно вmysqldump.exeродительскую папку и запустите команду вручную, перейдя к файлу в папке моих документов (вы получите ошибки об отказе в доступе, если просто попытаетесь сбросить его в ту же папку).

Пример:

      C:\Program Files\MySQL\MySQL Workbench 8.0 CE>mysqldump.exe --user=USER--host=127.0.0.1 --protocol=tcp --port=3306 --default-character-set=utf8 --skip-triggers --column-statistics=0 "mantis" > "C:\users\moi\Documents\dumps\mantis.sql"

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

Поскольку я не могу комментировать фактический ответ пользователя: cristiank, я добавляю небольшую вариацию фактического ответа. В моем случае мне пришлось изменить его, и мне пришлось оставить его в[client]раздел, чтобы не добавлять[mysqldump]раздел.

Так что для меня это сработало/etc/my.cnf.d/client.cnf

      [client]
column-statistics=0
Другие вопросы по тегам