【MySQL】バグっているエラーを解消する

肥大化しているエラーログに立ち向かうお話

とあるWordPressが遅いという流れからログを漁っているとMySQLのエラーログがすごいことになっていました。

確認してみると下記のログが大量に吐き出されていました。

InnoDB: Error: Column last_update in table "mysql"."innodb_table_stats" is INT UNSIGNED NOT NULL but should be BINARY(4) NOT NULL (type mismatch)

innodb_table_statsというテーブルのlast_update列タイプがミスマッチらしい(分かってない)

ググりますと下記が参考になりそうでした。

InnoDB: Error: Column last_update in table "mysql"."innodb_table_stats" is INT UNSIGNED NOT NULL but should be BINARY(4) NOT NULL (type mismatch) | Luxian's Notes

アップグレードしたらなおるってことかな!

# mysql_upgrade -u root -p

念のためバックアップをとっておいて上記コマンドを実行。

見事にエラー表示が出て閲覧すらできなくなりました。

みんながみんな同じ環境じゃないってことよね。

バックアップから戻して調査を続けます。

下記が正解っぽいです。

https://www.webdevqa.jp.net/ja/mysql/%E3%82%AF%E3%82%A8%E3%83%AA%E3%81%AE%E5%AE%9F%E8%A1%8C%E3%81%94%E3%81%A8%E3%81%ABinnodb%E5%86%85%E9%83%A8%E3%82%A8%E3%83%A9%E3%83%BC%E3%82%92%E5%8F%96%E5%BE%97%E3%81%99%E3%82%8B/l966298145/

>この問題は、以前のバージョンからのアップグレード中に発生した、データベース変換手順のバグが原因と考えられる「タイムスタンプ」フィールドの内部表現に関連しています。

バージョン上げたときにバグってたってことかな。

# mysqldump --events --quick --single-transaction mysql > mysql-dump.sql
# mysql mysql < mysql-dump.sql
# systemctl restart mysql

参考にして上記コマンドを試してみます。

エラーが消えた!

やっぱりエラーログがかるくなるって気分的にいいですね!

コメント

タイトルとURLをコピーしました