Каждый раз, когда я пытаюсь сделать 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-client 8.0
и попробуйте получить доступ к mysql 5-7
сервер - может в этом причина?
Это связано с новым флагом, который включен по умолчанию в 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.
Я не подтвердил, но предположили, что следующая информация также соответствует действительности: В версии 8.0.14 она отсутствует. В версии 8.0.16 это делается по умолчанию.
Я провел целый день в поисках решения и записался здесь, чтобы поделиться своим.
Да, вероятно, эта ошибка связана с разницей версий.
Просто скачайте ZIP-архив MySQL 5.7 отсюда: https://dev.mysql.com/downloads/mysql/ и разархивируйте его, затем используйте оттуда файл mysqldump.exe.
Если вы используете MySQL Workbench, вам нужно будет указать путь к загруженному вами инструменту mysqldump, перейдя в Правка -> Настройки -> Администрирование (с левой панели).
Надеюсь это поможет.
Самая простая работа
Когда используешь Mysql Workbench 8.0
Удачи!
Делать этот ответ проще можно переименовать mysqldump
, создайте на его месте сценарий оболочки и вызовите переименованный mysqldump
с --column-statistics=0
аргумент. Например:
Переименуйте mysqldump:
mv /usr/local/bin/mysqldump /usr/local/bin/_mysqldump
Сохраните на своем месте следующий сценарий оболочки:
#!/bin/sh
_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
Я знаю, что опаздываю на вечеринку, но это сводило меня с ума. если ты хотеть Чтобы использовать последнюю версию 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.
В моей ситуации я использую Mac-OS. Кстати, было [mysqldump]
column-statistics=0
поля в my.cnf
файл, который находится под /usr/local/etc
каталог. Удаление этого поля устранило проблему. (не: версия mysql 5.7 и устанавливается через homebrew).
У меня также была такая же проблема, она возникает, когда я объединяю несколько таблиц данных в существующую схему из другой схемы и экспортирую объединенные данные в автономный файл сценария. Я пытался изменить column-statistics = 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 МБ. Тогда это работает.
В дополнение к Pierlo https://serverfault.com/a/919403/586669
В 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=
вариант, и это должно быть первый параметр.
Также требуется отключение эха, иначе рабочая среда не сможет правильно проанализировать вывод команды.