mysqldump кидає: невідома таблиця "COLUMN_STATISTICS" в інформаційній схемі (1109)


117

Кожен раз, коли я намагаюся зробити a, 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і намагаюся отримати доступ до 5-7сервера mysql - можливо, це причина?

Відповіді:


168

Це пов’язано з новим прапором, який за умовчанням увімкнено у 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.


--дані <бази даних> для певної бази даних
Мохаммад Хашам

@forthrin Відповідь відредаговано, щоб показати, як зробити зміни постійними.
Ендрю Шульман

2
Також у MySQL Workbench є налаштування: У розділі "Додаткові параметри ..." в розділі "інше" є стовпець-статистика, встановлений на "ІСТИНА". Змініть це на нуль, як пропонують вимкнути.
Алекс Баркер

6
У MySQLWorkbench v8.0.14 немає цього налаштування. Що я зробив (на Mac), це завантажити старішу версію MySQLWorkbench, відкрив цей пакет (Показати вміст пакета) і витягнув пакетну версію 'mysqldump'. Потім я відредагував налаштування MySQLWorkbench, щоб переглянути цю версію "mysqldump" замість власної. Експорт працює чудово, не встановлюючи жодних прапорів. ref) bugs.mysql.com/bug.php?id=91640#c484427
Скотт

1
Для всіх, хто використовує DataGrip, можна клацнути правою кнопкою миші на схемі у вікні Бази даних, перейти до "Дамп із" mysqldump "" та додати --column-statistics=0аргумент до створеного списку аргументів у вікні внизу спливаючого вікна.
Travesty3

27

Для тих, хто використовує MySQL Workbench, на екрані експорту даних є кнопка "Додаткові параметри". Параметр "Використовувати статистику стовпців" можна відключити, встановивши значення 0.

Я не підтвердив, але наступна інформація пропонується також бути правдивою: У версії 8.0.14 вона відсутня. У версії 8.0.16 це робиться за замовчуванням.


7
Лише MySQL Workbench версії 8.0.13 і після цього має можливість вимкнути "Використовувати статистику стовпців".
Пол Денг

7
У MySQL Workbench версії 8.0.14 немає цієї опції. Схоже, вони його вийняли.
Декан або

3
Дійсно, bugs.mysql.com/bug.php?id=94294 , слід повернутись у 8.0.16 ...
Жан-Крістоф Мейло

все ще трапляється о 8.0.16
Амір-бар

Я можу підтвердити, що MySQLWorkbench v8.0.17 виправив проблему (MacOs). Він кидав цю помилку на MySQLWorkbench v8.0.12 та модернізував. Я помітив, що він більше не попереджає мене про експорт даних з 5.X БД і автоматично додав --column-statistics=0команду експорту.
Elte156

20

Я витратив цілий день у пошуках рішення, і заспівав тут просто, щоб поділитися своїм.

Так, ймовірно, ця помилка пов'язана з різницею версій.

Просто завантажте MySQL 5.7 ZIP Archive звідси: https://dev.mysql.com/downloads/mysql/ і розпакуйте його, а потім використовуйте файл mysqldump.exe звідти.

Якщо ви використовуєте MySQL Workbench, вам потрібно буде встановити шлях до завантаженого вами інструменту mysqldump, перейшовши в меню Правка -> Налаштування -> Адміністрація (з лівої панелі).

Сподіваюсь, це допомагає.


3
Для користувачів Windows цей .exe розміщений за адресою:C:\Program Files\MySQL\MySQL Server 5.7\bin\mysqldump.exe
Джейсон

1
MySQLWorkbench v8.0.16 досі відсутній варіант встановити прапор статистики стовпців. Це рішення, мабуть, є найкращою відповіддю, оскільки дозволяє належним чином узгодити версії MySQL у разі майбутніх проблем.
Кікси

5

Для того, щоб ця відповідь простіше, ви можете перейменувати mysqldump, зробити скрипт на своєму місці і викликати перейменовані mysqldumpз --column-statistics=0аргументом. Наприклад:

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

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

Збережіть на своєму місці такий скрипт оболонки:

#!/bin/sh

_mysqldump --column-statistics=0 $@

1
Це чудова пропозиція і працює в MacOSX за допомогою Mysql Workbench, однак ви повинні включити повний шлях до вашого справжнього виконуваного файлу mysqldump, або він, схоже, не працює. Я спробував ./, але все одно не вийшло. Поклавши повний шлях і Workbench зміг запустити його зі статистикою, відміченою.
Енді Д

4

Найпростіша робота навколо

При використанні Mysql Workbench 8.0

  • Відкрийте вкладку "Експорт даних"
  • Клацніть Додаткові параметри введіть тут опис зображення
  • У розділі Інше встановіть статистику стовпців на 0 введіть тут опис зображення
  • Знову експортуйтевведіть тут опис зображення

Удачі!


5
У мене немає такого варіанту в розділі "Інше"
JoRouss

@JoRouss Завантажити 8.0.13 downloads.mysql.com/archives/workbench можливо .16 версія матиме це знову! В іншому випадку ми використовуємо командний рядок :-)
Франсуа Бретон

Я в кінцевому підсумку скористався пропозицією @DodiX. Дякую @Francois!
JoRouss

Дурне рішення до 8.0.16 не вичерпано: у розширених параметрах встановіть прапорець "сила", щоб помилка була проігнорована. Звичайно, це буде ігнорувати будь-яку іншу помилку
Bostone

@Bostone, це рішення не видає помилки.
Каспер

2

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


0

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


0

У мене також була така ж проблема, вона виникає, коли я об'єдную декілька таблиць даних із існуючою схемою з іншої схеми та експортую об'єднані дані до власного файлу сценарію. Я намагався змінити стовпець-статистика = 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

Я використовую XAMPP, і MySQL Workbench попереджає про невідповідність версії. Я встановив MySQL Workbench, щоб вказати на mysql.exe та mysqldump.exe XAMPP.

Перейдіть до Правки -> Налаштування -> Адміністрація та встановіть шлях для кожного.

Це працює принаймні для версії 8.0.14. Тож для інших ви можете уникати використання пакетної версії mysql та mysqldump.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.