MariaDBをアップデートしたら「mysql_upgrade」コマンドを実行しましょう

MariaDBを更新した際に、次のような警告ログが出力される場合があります。

[Warning] InnoDB: Table mysql/innodb_table_stats has length mismatch in the column name table_name. Please run mysql_upgrade

ここでは、この警告ログが出力された際に、ログで指示されている「mysql_upgrade」コマンドを実行して、警告を解消する手順を紹介します。

動作環境

この記事は、以下の環境で実行した結果を基にしています。他のディストリビューションやバージョンでは、動作結果が異なる場合があることをご了承ください。

ソフトウェア バージョン
CentOS 7.6.1810
MariaDB 10.3.12

「mysql_upgrade」コマンドの実行方法

mysql_upgrade - MariaDB Knowledge Base

MariaDBのナレッジによると「mysql_upgrade」は、データベースのシステムテーブルを最新バージョンに更新するツールのようです。

コマンドの実行方法は、次のとおりです。

まずは、MariaDBが起動している状態で以下のコマンドを実行します。

# mysql_upgrade -u root -p

パスワードを入力すると処理が開始されます。処理にかかる時間は、データベースやテーブルの数にもよると思いますが、おおむね数秒で完了します。

# mysql_upgrade -u root -p
Enter password: 
Phase 1/7: Checking and upgrading mysql database
Processing databases
mysql
mysql.column_stats OK
mysql.columns_priv OK
mysql.db OK
mysql.event OK
mysql.func OK
mysql.gtid_slave_pos OK
mysql.help_category OK
mysql.help_keyword OK
mysql.help_relation OK
mysql.help_topic OK
mysql.host OK
mysql.index_stats OK
mysql.innodb_index_stats OK
mysql.innodb_table_stats OK
mysql.plugin OK
mysql.proc OK
mysql.procs_priv OK
mysql.proxies_priv OK
mysql.roles_mapping OK
mysql.servers OK
mysql.table_stats OK
mysql.tables_priv OK
mysql.time_zone OK
mysql.time_zone_leap_second OK
mysql.time_zone_name OK
mysql.time_zone_transition OK
mysql.time_zone_transition_type OK
mysql.user OK
Phase 2/7: Installing used storage engines... Skipped
Phase 3/7: Fixing views
Phase 4/7: Running 'mysql_fix_privilege_tables'
Phase 5/7: Fixing table and database names
Phase 6/7: Checking and upgrading tables
Processing databases
…(省略)
Phase 7/7: Running 'FLUSH PRIVILEGES'
OK

以上で作業完了です。

これで、警告ログは出なくなります。

あとがき

ソフトウェアの更新後は、動作だけを確認しているとこのようなログを見逃してしまいそうですね。ソフトウェアの更新後は、面倒でもログからも正常動作を確認しておきましょう。

あなたへのおすすめコンテンツ
トップへ戻る