zl程序教程

您现在的位置是:首页 >  数据库

当前栏目

数据库主从复制出错处理——筑梦之路

数据库 处理 出错 主从复制 筑梦之路
2023-09-14 09:09:36 时间

报错信息:

Column 2 of table 'test.t1' cannot be converted from type 'varchar(800 octets)' to type 'varchar(600 octets) character set utf8'

数据库版本:mariadb 10.4.22

原因分析:数据库编码不一致导致

问题分析解决过程:

注意:以下操作均不要在主库上做修改的操作,主库只能查询

1.停掉从库的复制
stop slave;

2.切换数据库
use test;

3.查看数据库编码和主库上进行对比
show variables like '%character%';

#此处经过对比发现主库该库的编码都是utf8mb4,从库上有参数不一致
4.从库参数编码值不一致时设置
set character_set_database=utf8mb4;

5.修改编码后验证
#再次查看是否设置成功
show variables like ''%character%;

6.查看出错表的创建sql
show create table t1;

#此处需要和主库上进行对比,发现字段的编码格式不一致

7.手动修改从库上出错表的编码
#修改表的编码格式
ALTER TABLE t1 CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

#修改字段编码 只要字段的类型是varchar的都需要修改编码类型
ALTER TABLE t1 MODIFY COLUMN `CRUSER` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '创建人';


8.修改完成后启动从库复制验证
start slave;
show slave status\G;