Edited at

MySQL クライアントを 8.x にアップデートしたときに WP-CLI の DB コマンドでエラーが出た時の対処法

More than 1 year has passed since last update.

MySQL クライアント 8.0 系でどうやら仕様が変わったらしく wp db export コマンドで以下のようなエラーが出ました。


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

以下は僕の環境の MySQL クライアントのバージョン。

$ mysql --version

mysql Ver 8.0.11 for osx10.13 on x86_64 (Homebrew)


対処方法

ドキュメントにちゃんと書かれていませんが、WP-CLI の wp db コマンドでは、MySQL 用のコマンドラインオプションをそのまんま使用することができます。

上の不具合では、以下のようなオプションを渡してあげると解決します。

$ wp db export --column-statistics=0 

この件に関しては被害者が多発しそうなのでヘルプに追加しておきましょうかね。


ついでに Wordmove での対処法

このエラーは MySQL の仕様変更によるものなので、Wordmove でも同様のエラーが出ます。

これに対する対処方法は。Movefile に以下のように mysqldump_options: "--column-statistics=0" を記述することです。

local:

vhost: "http://example.test"
wordpress_path: "wordpress" # use an absolute path here

database:
name: "wordpress"
user: "wordpress"
password: "wordpress"
host: "xxx.xxx.xxx.xxx"
charset: "utf8"
mysqldump_options: "--column-statistics=0"