web-dev-qa-db-ja.com

テーブルmysql / innodb_index_statsの列名table_nameの長さが一致していません。 mysql_upgradeを実行してください

mysqld.log次のような数千行があります。

Table mysql/innodb_index_stats has length mismatch in the column name table_name.  Please run mysql_upgrade

したがって、問題に関する事実上すべての投稿(およびエラーメッセージ自体)によると:

mysql_upgrade -u root -p

Enter password: 
Checking if update is needed.
Checking server version.
Running queries to upgrade MySQL server.
Checking system database.
...

すべてのデータベースのすべてのテーブルは

...
mysql.columns_priv                                 OK
mysql.db                                           OK
mysql.engine_cost                                  OK
mysql.event                                        OK
mysql.func                                         OK
mysql.general_log                                  OK
mysql.gtid_executed                                OK
mysql.help_category                                OK
mysql.help_keyword                                 OK
mysql.help_relation                                OK
mysql.help_topic                                   OK
mysql.innodb_index_stats                           OK
mysql.innodb_table_stats                           OK
mysql.ndb_binlog_index                             OK
mysql.plugin                                       OK
mysql.proc                                         OK
mysql.procs_priv                                   OK
mysql.proxies_priv                                 OK
mysql.server_cost                                  OK
mysql.servers                                      OK
mysql.slave_master_info                            OK
mysql.slave_relay_log_info                         OK
mysql.slave_worker_info                            OK
mysql.slow_log                                     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
The sys schema is already up to date (version 1.5.1).
Checking databases.
...

しかし、まだログにエラーが表示されます

2019-01-27T18:37:15.304587Z 66190 [Warning] InnoDB: Table mysql/innodb_table_stats has length mismatch in the column name table_name.  Please run mysql_upgrade
2019-01-27T18:37:15.304620Z 66190 [Warning] InnoDB: Table mysql/innodb_index_stats has length mismatch in the column name table_name.  Please run mysql_upgrade
2019-01-27T18:37:15.304684Z 66190 [Warning] InnoDB: Table mysql/innodb_table_stats has length mismatch in the column name table_name.  Please run mysql_upgrade
2019-01-27T18:37:15.304707Z 66190 [Warning] InnoDB: Table mysql/innodb_index_stats has length mismatch in the column name table_name.  Please run mysql_upgrade

構造は問題ないようです。構成の問題はありますか?お知らせ下さい。

答えは-サーバーを再起動するようです。これを行う権限はありませんが、管理者が再起動した後、問題は解決したようです。 MySQLを再起動しただけでは解決しないのはなぜですか?

11
Roy Hinkley

多分この情報は役に立つでしょう。

https://dev.mysql.com/doc/relnotes/mysql/5.7/en/news-5-7-23.html

注意

このリリースには、innodb_index_statsおよびinnodb_table_statsシステムテーブルへの変更が含まれています。このリリースにアップグレードするときは、これらの変更を含めるために、必ずmysql_upgradeを実行してください。

5
Chrysweel

警告が生成されているときに何が起こっているのか手がかりはありますか?何らかのバージョンの不一致のようです。プラグインはありますか?

Bugs.mysql.comでバグを報告してください。

その間、

USE mysql;
SHOW CREATE TABLE innodb_index_stats ;

特に、table_nameの定義を確認してください。それは従来

`table_name` varchar(64) COLLATE utf8_bin NOT NULL,

8.0はそれを

`table_name` varchar(199) COLLATE utf8_bin NOT NULL,

それでも64である場合は、mysql_updateすべきが実行することをシミュレートします。

ALTER TABLE innodb_index_stats
    MODIFY   `table_name` varchar(199) COLLATE utf8_bin NOT NULL;

innodb_table_statsの同上。

3
Rick James