Roy*_*ley 22 mysql errors mysql-8.0
在mysqld.log我有数千行,如:
Table mysql/innodb_index_stats has length mismatch in the column name table_name. Please run mysql_upgrade
Run Code Online (Sandbox Code Playgroud)
因此,根据几乎所有关于此事的帖子(以及错误消息本身):
mysql_upgrade -u root -p
Enter password:
Checking if update is needed.
Checking server version.
Running queries to upgrade MySQL server.
Checking system database.
...
Run Code Online (Sandbox Code Playgroud)
并且所有数据库中的所有表都像
...
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.
...
Run Code Online (Sandbox Code Playgroud)
但是,我仍然在日志中收到错误
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
Run Code Online (Sandbox Code Playgroud)
结构看起来没问题。是不是配置有问题?请指教。
答案似乎是 - 重新启动服务器。我无权执行此操作,但在管理员重新启动后,问题似乎已解决。不知道为什么只是重新启动 MySQL 没有解决?
小智 12
也许这些信息很有用。
https://dev.mysql.com/doc/relnotes/mysql/5.7/en/news-5-7-23.html
笔记
此版本包括对 innodb_index_stats 和 innodb_table_stats 系统表的更改。升级到此版本时,请确保运行 mysql_upgrade 以包含这些更改。
Ric*_*mes 10
您知道生成警告时发生了什么吗?听起来像是某种形式的版本不匹配。你有插件吗?
请在 bugs.mysql.com 上提交错误。
同时,执行以下操作:
USE mysql;
SHOW CREATE TABLE innodb_index_stats ;
Run Code Online (Sandbox Code Playgroud)
特别检查 的定义table_name。以前是这样的:
`table_name` varchar(64) COLLATE utf8_bin NOT NULL,
Run Code Online (Sandbox Code Playgroud)
但在 MySQL 8.0 中它变成了:
`table_name` varchar(199) COLLATE utf8_bin NOT NULL,
Run Code Online (Sandbox Code Playgroud)
如果它仍然是 64,则重新运行mysql_update 应该执行的操作,方法是
ALTER TABLE innodb_index_stats
MODIFY `table_name` varchar(199) COLLATE utf8_bin NOT NULL;
Run Code Online (Sandbox Code Playgroud)
同上innodb_table_stats。
另请参阅 Giacomo1968 的评论
在命令行中:
mysql_upgrade --user=your_user_name --password--force如果数据库已经升级并且出现问题,您可能必须使用(如果您在这里,可能就是这种情况)。别担心,mysql_upgrade我们会告诉您这一点,因此您只需使用 重新运行它即可--force。
就是这样。