モヒカンは正義

プログラマー風林火山で言う「風のエンジニア」になりたい(比較的)若者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)

対策

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