はじめに
久しぶりにMySQLWorkbenchでDumpを出力しようとしたら、表題のエラーが発生。
対処方法を調べたら英語のページしか見つからなかったので、自分記録用に記事を書いてみた。
発生したエラー
mysqldump: Couldn't execute 'SELECT COLUMN_NAME, JSON_EXTRACT(HISTOGRAM,
'$."number-of-buckets-specified"') FROM
information_schema.COLUMN_STATISTICS WHERE SCHEMA_NAME = 'スキーマ名' AND
TABLE_NAME = 'テーブル名';':
Unknown table 'COLUMN_STATISTICS' in information_schema (1109)
information_schema スキーマに「COLUMN_STATISTICS」というテーブルが無いと怒られた。
対象方法
MySQL Workbench 8.0の場合、データのエクスポートが正常に行われないケースがあるらしい。
まずはWorkbenchのバージョン確認
確認方法
1.MySQL Workbenchを起動する
2.画面上部の「Help」メニューを開く
3.「About Workbench」を選択
4.バージョンが表示される『Workbench バージョン番号』
MySQL Workbench 8.0でした。
設定変更手順
1.MySQLWorkbenchを起動する
2.画面上部「Server」メニューを開く(Managementタブを開いてもいい)
3.「Data Export」を選択
4.右上の「「Advanced Options...」をクリック
5.Other の中にある「column-statics -Writing……(set 0 to diasble).」を"0"に設定
更新・設定反映ボタンは特になかったので[<Return]で戻った。
再度エクスポート
エクスポート正常終了したのでOK
コマンドで実行する時は
mysqldumpオプションに「--column-statistics=0」を追加すればよいらしい。
mysqldump --column-statistics=0 --host=<server> --user=<user> --password=<password>
まとめ
mysqldump 8.0.2で新しく追加されたオプション[--column-statistics]
これが古いバージョンだと対応できずにエラーが発生したのでは?と推測できる。
公式でオプションの内容を調べたが、正直どういう使い方をするためのオプションなのか、その優位性を理解するまでには至らなかったので、古い(ver8.0以下)MySQLを使用するケースがある方はデフォルト「0」に設定しておいてとりあえずは問題ないだろう。