Как отключить столбцовую статистику в MySQL 8 на постоянной основе? - программирование
Подтвердить что ты не робот

Как отключить столбцовую статистику в MySQL 8 на постоянной основе?

Начиная с MySQL 8 флаг column-statistics включен по умолчанию.

Поэтому, если вы попытаетесь сбросить некоторые таблицы с помощью MySQL Workbench 8.0.12, вы получите это сообщение об ошибке:

14:50:22 Dumping db (table_name) Запуск: mysqldump.exe --defaults-file = "c:\users\username\appdata\local\temp\tmpvu0mxn.cnf" --user = db_user --host = db_host [ CN02] = tcp --port = 1337 --default-character-set = utf8 --skip-triggers "db_name" "table_name" mysqldump: Не удалось выполнить 'SELECT COLUMN_NAME, JSON_EXTRACT (HISTOGRAM,' $. "Число -buckets-defined "') FROM information_schema.COLUMN_STATISTICS WHERE SCHEMA_NAME =' db_name 'AND TABLE_NAME =' table_name ';': Неизвестная таблица 'COLUMN_STATISTICS' в information_schema (1109)

Операция завершилась неудачно с exitcode 2 14:50:24 Экспорт C:\path\to\my\dump завершился с 1 ошибкой

Есть ли способ в MySQL (Workbench) 8 отключить column-statistics?


Обходной путь 1

Раздражающее обходное решение делает это вручную:

mysqldump --column-statistics=0 --host=...

Обходной путь 2

  1. переименовать mysqldump
  2. создать сценарий оболочки (или пакет в Windows)
  3. вызовите переименованный mysqldump с аргументом --column-statistics=0 в этом скрипте
  4. сохранить его как mysqldump

Обходной путь 3

  1. загрузить MySQL 5.7
  2. извлечь mysqldump
  3. использовать этот mysqldump

Например, в MySQL Workbench: Изменить/Настройки.../Администрирование/Путь к средству mysqldump


Заранее спасибо!

4b9b3361

Ответ 1

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

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

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

Удачи!

Ответ 2

Обходной путь для меня:

  1. Создайте файл с именем mysqldump.cmd с содержимым:
    @echo off
    "c:\Program Files\MySQL\MySQL Workbench 8.0 CE\mysqldump.exe" %* --column-statistics=0

(при необходимости замените путь к mysqldump.exe)

  1. Откройте MySQL Workbench и перейдите в "Правка"> "Установки"> "Администрирование", измените путь на инструмент mysqldump и укажите его на mysqldump.cmd

Ответ 3

Идея такова: каждая версия сервера имеет выделенную версию mysqldump. Не идеальна и, конечно, не очень обратная совместимость, но эта ситуация. MySQL Workbench может включать только один двоичный файл mysqldump, поэтому используется последний. Подход к загрузке MySQL 5.7 zip и использование mysqldump отсюда - хорошее обходное решение без многих побочных эффектов. Вам нужно только быть осторожным, какой сервер вы сбрасываете, с какой дамп-версией.

Если вам нравится, чтобы этот флаг статистики столбца автоматически применялся MySQL Workbench, пожалуйста, напишите отчет об ошибке на странице https://bugs.mysql.com.

Обновить

Тем временем для этой проблемы был создан отчет об ошибке: https://bugs.mysql.com/bug.php?id=91640

Ответ 4

Загрузите последнюю версию Mysql Workbench 8.0.16 и больше никаких проблем.

https://dev.mysql.com/downloads/workbench/

Нет возможности проверить!

Ответ 5

Может быть другой обходной путь, если вы используете ОС, которая поддерживает mysqldump (то есть Linux). Задайте путь к двоичному файлу mysqldump в настройках и включите в путь аргумент --column-statistics = 0 в: Редактировать >> Предпочтения >> Администрирование >> Путь к инструменту MysqlDump

Ответ 6

Я скачал версию 8.0.16, все та же проблема.

При расширенных параметрах экспорта данных я не видел ни одной опции о "статистике"! Я добавил на my.ini в

[mysqldump]
quick
max_allowed_packet = 16M
column-statistics=0

Не решает проблему

Я гуглил, но не смог найти решение. Я нахожу товарищей, которые борются с этим, но не кто-нибудь с решением, по крайней мере для меня.

В конце я изменил в MySQL Workbench файл c:\Program Files\MySQL\MySQL Workbench 8.0 CE\modules\wb_admin_export.py:

skip_column_statistics = True #if get_mysqldump_version() > Version(8, 0, 2) and self.owner.ctrl_be.target_version < Version(8, 0, 0) else False

Я сделал комментарий

if get_mysqldump...

Я знаю, что это не тот путь, но я не могу сейчас найти другое лучшее решение. Для меня это как минимум странно и странно. Если у кого-то есть лучшее решение, дайте мне знать!

Ответ 7

Хорошо, теперь я вижу другой поток, и это решение. Это работает и для версии 8.0.16! (Прокрутите вниз до последнего поста! Ответ Дина Ор)

Удачи.

Ответ 8

ПОЛЬЗОВАТЕЛИ WINDOWS

У меня есть MySQL Workbench 8.0CE и Xampp v3.2.3, и это сработало для меня:

  1. Откройте xampp и откройте mysql config> my.ini//add: column-statistics = 0 так:
    [mysqldump]
    quick
    max_allowed_packet = 16M
    column-statistics = 0

Сохраните и закройте, перезагрузите сервер xampp mysql. (так, на всякий случай)

в Workbench: " Правка"> "Настройки"> "Администрирование"

В моем маршруте Mysqldump укажите ваш маршрут mysqldump для xampp, в моем случае:

C:\xampp\mysql\bin\mysqldump.exe

Это сработало для меня!