Выдает 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 .
Чтобы облегчить этот ответ, вы можете переименовать 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, выполните следующие действия:
- Перейти https://mariadb.com/downloads/community/https://mariadb.com/downloads/community/
- На странице выше выберите свою операционную систему.
- Сервер сообщества -> Verison (последняя общедоступная версия) -> ОС (64-разрядная версия MS Windows) и нажмите «Загрузить».
- Запустите только что загруженный экран установки и убедитесь, что «Сервер MariaDB -> Клиентские программы» включен.
- Запустите MySQL Workbench
- Выберите меню: Редактировать -> Настройки...
- В левом столбце выберите «Администрирование».
- Обновите «Путь к инструменту mysqldump:» на C:\Program Files\MariaDB 10.10\bin\mariadb-dump.exe.
- Обновите «Путь к инструменту 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 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:
- Установите mariadb, например
brew install mariadb
- Перейдите в MySQLWorkbench > Настройки > Администрирование.
- Установите путь 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