モヒカンは正義

プログラマー風林火山で言う「風のエンジニア」になりたい(比較的)若者Webエンジニアの備忘録

mysqldumpコマンドで "Unknown table 'COLUMN_STATISTICS' in information_schema (1109)" と怒られる

エラー

mysqldump コマンドでMySQL上のデータのバックアップを取ろうとしたとき、下記のようなエラーが出た。

mysqldump: Couldn't execute 'SELECT COLUMN_NAME, JSON_EXTRACT(HISTOGRAM, '$."number-of-buckets-specified"') FROM information_schema.COLUMN_STATISTICS WHERE SCHEMA_NAME = '$db_name' AND TABLE_NAME = '$table_name';': Unknown table 'COLUMN_STATISTICS' in information_schema (1109)

注視すべきは Unknown table 'COLUMN_STATISTICS' in information_schema (1109) の部分。

原因と対策

一言で言うと、mysqldump 8以降でそれ以前 (5.7とか) のMySQLサーバに対してダンプを実行したらこの問題が起こるらしい。

これを回避するのは、mysqldumpコマンドに --skip-column-statistics というオプションを設定する。

$ mysqldump --version
mysqldump  Ver 8.0.16 for osx10.14 on x86_64 (Homebrew)

$ mysqldump --help
...
  --column-statistics Add an ANALYZE TABLE statement to regenerate any existing
                      column statistics.
                      (Defaults to on; use --skip-column-statistics to disable.)
...

こんな感じにしたらエラーが出なくなった ✌

$ mysqldump --skip-column-statistics --host ...

参考にした資料

serverfault.com

dev.mysql.com

nippondanji.blogspot.com

yoku0825.blogspot.com