记录关于搭建mysql主从复制中遇见的问题

在搭建MySQL主从复制过程中,遇到从库无法同步master新表数据的问题,错误信息显示列类型转换失败。经检查,发现master和slave字符集设置不同,master为utf-8,而slave为latin1。通过修改slave的字符集设置为utf-8,包括全局变量和数据库字符集,并在配置文件my.cnf中更新相关设置,重启数据库服务后,问题得到解决。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在MySQL主从复制搭建完成后,在master上创建好新表,插入数据,发现从表并没有插入;

show slave status\G;

查看slave的报错信息:[ERROR] Slave SQL: Column 1 of table 'DB.t_tb' cannot be converted from type 'varchar(180)' to type 'varchar(60)', Internal MariaDB error code: 1677


查看master与slave的表信息,两边都一样,初步估计是master与slave 字符集设置不一致引起;

使用命令:show global variables like '%char%';

查看数据库的字符集设置,发现master是utf-8,而slave是latin1;

使用一下语句将slave的字符集换成utf-8


set global character_set_server='utf8';

set global character_set_database='utf8';

set global character_set_connection='utf8'

set global character_set_client='utf8';

set global character_set_results='utf8'


使用show global variables like '%char%';命令查看是否修改成功

进入要使用的数据库,修改

show variables like '%char%';

例 set character_set_server='utf8';

alter database DB_name default character set utf8; 


最好在mysql的配置文件my.cnf中的[mysqld]下面添加character_set_server = utf8;[mysql]下面添加default-character-set = utf8

重启数据库服务即可;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值