背景
mysql 5.7.x 升级到8.0.32
原来使用的rpm安装的, 新版本是.tar.gz包升级.
在使用新版本的mysqld启动的时候遇到报错如下
代码语言:javascript复制2023-10-09T01:55:44.462158Z 2 [ERROR] [MY-013140] [Server] 'DB_XX.TABLE_XX.COLUMN_XX' contains an invalid utf8mb3 character string:
大概10多条这样的报错, 然后就启动失败了.
分析
该报错为那张表的那个字段包含了无效字符. 可以使用show create table XX查看发现注释确实有无效字符.
代码语言:javascript复制show create table DB_XX.TABLE_XX
解决办法和总结
修改该注释为有效字符串或者去掉该注释即可
代码语言:javascript复制alter table DB_XX.TABLE_XX modify column COLUMN_XX int comment '';
每张表遇到第一个无效的字符就会停止检查并报错, 也就是该表可能还有其它无效字符, 可以顺便一起改了, 不然后面一个个报错,改起来麻烦.
修改完后, 使用mysqld启动成功了. 准备使用mysql_upgrade升级数据字典的时候, 发现不需要手动执行了(mysqld已经干完了.)
升级过程大概如下: 1. 下载并上传mysql 8.0.32
2. 解压mysql 8.0.32 到 /usr/loca/mysql目录
3. 修改配置文件: 设置basedir = /usr/loca/mysql 稳一点,可以再备份下datadir目录
4. 修改相关服务, 就改下mysqld路径即可
5. 修改有问题的注释(根据启动报错来的)
6. 启动mysql
7. 使用mysql_upgrade连接mysql去升级相关字典(8.0.16开始就不需要手动执行了)