mysqldump выдает: Неизвестная таблица 'COLUMN_STATISTICS' в information_schema (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-client 8.0 и пытаюсь получить доступ к серверу mysql 5-7 - может быть, это причина?

136
задан 29 July 2018 в 10:16
18 ответов

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

193
ответ дан 28 November 2019 в 19:18

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

Да, вероятно, эта ошибка из-за разницы в версиях.

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

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

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

20
ответ дан 28 November 2019 в 19:18

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

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

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

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

#!/bin/sh

_mysqldump --column-statistics=0 $@
5
ответ дан 28 November 2019 в 19:18

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

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

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

0
ответ дан 28 November 2019 в 19:18

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

0
ответ дан 28 November 2019 в 19:18

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

2
ответ дан 28 November 2019 в 19:18

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

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

.
29
ответ дан 28 November 2019 в 19:18

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

.
0
ответ дан 28 November 2019 в 19:18

Самая простая работа

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

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

Удачи!

5
ответ дан 28 November 2019 в 19:18

Я знаю, что опаздываю на вечеринку, но это сводило меня с ума. Если вы хотите, чтобы использовал последнюю версию 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, чтобы отключить, и нажмите кнопку Return button)

enter image description here

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

7
ответ дан 3 May 2020 в 15:58

В дополнение к 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): выполняемая команда дампа включает (или может включать) параметр --defaults-file=, и этот должен быть первый параметр.

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

2
ответ дан 4 August 2020 в 11:40

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

Это можно сделать в версии 8.0.13

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

  • --delete-master-logsимеет тот же эффект, что и команда RESET MASTERSQL.
  • RESET MASTERудаляет все двоичные файлы журнала, перечисленные в файле индекса, сбрасывает файл индекса двоичного журнала, делая его пустым, и создает новый файл двоичного журнала. Этот оператор предназначен для использования только при первом запуске мастера.
1
ответ дан 16 November 2020 в 08:42

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

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

Access to local client selection

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

Local clients available

1
ответ дан 18 December 2020 в 09:15

Я столкнулся с той же проблемой с последней версией 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 вашими именами.

1
ответ дан 6 January 2021 в 10:11

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

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

3
ответ дан 1 February 2021 в 19:40

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

0
ответ дан 7 September 2021 в 19:01

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

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

alias mysqldump="mysqldump --column-statistics=0"
1
ответ дан 20 September 2021 в 13:17

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

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

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

0
ответ дан 24 October 2021 в 21:31

Теги

Похожие вопросы