mysql升级后提示Please run mysql_upgrade

摘要:
新旧数据的正常表结构:mysql/indob_index_Stats和innodb_tables_Stats_Name字段5.7.17:table_namevarcharCOLLATEutf8_binNOTNULL,5.7.24:table_namevarchar COLLATEUf8_binNOTNULL。可以看出,版本5.7.24中的innodb _ index_ Stats和innodb_tables_ Stats_ name列的长度已从64变为199,而5.7.24中表已升级_ name仍为64,问题已找到!解决方案:执行MySQL_ upgrade uroot p–force,然后重新启动mysqld进程。根据提示,这是stats表中的数据库innodb_table_table _ name列异常长。

现象:

2020-12-10T05:16:25.210531Z 7003 [Warning] InnoDB: Table mysql/innodb_index_stats has length mismatch in the column name table_name.  Please run mysql_upgrade
2020-12-10T05:16:25.211750Z 7003 [Warning] InnoDB: Table mysql/innodb_table_stats has length mismatch in the column name table_name.  Please run mysql_upgrade
2020-12-10T05:16:25.211781Z 7003 [Warning] InnoDB: Table mysql/innodb_index_stats has length mismatch in the column name table_name.  Please run mysql_upgrade
2020-12-10T05:16:25.212575Z 7003 [Warning] InnoDB: Table mysql/innodb_table_stats has length mismatch in the column name table_name.  Please run mysql_upgrade
2020-12-10T05:16:25.212605Z 7003 [Warning] InnoDB: Table mysql/innodb_index_stats has length mismatch in the column name table_name.  Please run mysql_upgrade
2020-12-10T05:16:25.213263Z 7003 [Warning] InnoDB: Table mysql/innodb_table_stats has length mismatch in the column name table_name.  Please run mysql_upgrade
2020-12-10T05:16:25.213287Z 7003 [Warning] InnoDB: Table mysql/innodb_index_stats has length mismatch in the column name table_name.  Please run mysql_upgrade

根据提示,可以看到是因为 mysql.innodb_table_stats 和 mysql.innodb_index_stats这张表table_name列问题。 那么对比下新老库看看吧。

新老数据正常表结构:mysql/innodb_index_stats和innodb_tables_stats中table_name字段

5.7.17:table_name varchar(64) COLLATE utf8_bin NOT NULL,
5.7.24:table_name varchar(199) COLLATE utf8_bin NOT NULL,
可以看出,5.7.24 版本上的 innodb_index_stats 和innodb_tables_stats 的 table_name 列,长度从64 变成了 199,而我升级后的5.7.24中 table_name 还是64,问题找到!

解决办法

执行下mysql_upgrade -u root -p –force,然后重启下mysqld进程即可

根据提示:是数据库innodb_table_stats 表中table_name一栏长度异常导致的。

1:执行mysl更新
mysql_upgrade --host=‘127.0.0.1’ --port=3306 --user=‘root’ --password=“root”
2:重启数据库mysql
service mysql restart

免责声明:文章转载自《mysql升级后提示Please run mysql_upgrade》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇使用Electron构建跨平台的抓取桌面程序使用jxls技术导入Excel模版数据(转自其他博客)下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

临时表和全局临时表

临时表就是那些名称以井号 (#) 开头的表。如果当用户断开连接时没有除去临时表,SQL Server 将自动除去临时表。 临时表不存储在当前数据库内,而是存储在系统数据库 tempdb 内。 全局临时表以两个井号 (##) 开头的那些表名。在所有连接上都能看到全局临时表或者这样说只要这个全局临时表存在,那么用户创建会话后对所有的用户都是可见的。如果在创建全...

MySQL 如何存储长度较大的varchar与blob

本文同时发表在https://github.com/zhangyachen/zhangyachen.github.io/issues/96 最近,在工作中遇到了MySQL中如何存储长度较长的字段类型问题,于是花了一周多的时间抽空学习了一下,并且记录下来。 MySQL大致的逻辑存储结构在这篇文章中有介绍,做为基本概念:InnoDB 逻辑存储结构 注:文中所...

MYSQL多行合并成一行多列

原数据:idcodenamevalue-----------------------------12014000A1022014000B932014001C10042014002D452014002E562014003F972014003G10期望结果:codename1value1name2value2--------------------------...

PHP-mysql存储照片的两种方式

PHP-mysql存储照片的两种方式 方式一:把图片数据存储在数据库中(二进制) 数据库代码: CREATE TABLE `photo` ( `id` int(10) unsigned NOT NULL auto_increment, `type` varchar(100) NOT NULL, `binarydata` mediumblob NOT NUL...

MySQL 用 binlog 及备份进行回滚/恢复

MySQL 运用 binlog 及备份进行回滚/恢复 引言 如果碰到数据错误,需要进行回滚/恢复,可以利用 binlog 文件及备份进行操作。但是请注意,没有提前备份文件,或者没有开启 binlog 日志文件,不适用此方法。 如果数据库建立在云端,可以向相关服务提供商要求恢复;如果自建,建议找找其他办法,或者咨询专业的数据恢复服务。 回滚/恢复 1...

复制MySQL数据库A到另外一个MySQL数据库B(仅仅针对innodb数据库引擎)

方案一:(不用太大的变化my.ini文件) copy 原数据库A中的   数据库(database)  ib_logfile1  ib_logfile0   ibdata1; 关闭目的数据库B;  备份目的数据库B中的  ib_logfile1  ib_logfile0   ibdata1 三个文件,防止更改后不能使用数据库; 将copy 来的原数据库A...