千家信息网

Mysql字符集引发的主从报错怎么处理

发表于:2025-11-07 作者:千家信息网编辑
千家信息网最后更新 2025年11月07日,小编给大家分享一下Mysql字符集引发的主从报错怎么处理,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!收到报警,主从断了1
千家信息网最后更新 2025年11月07日Mysql字符集引发的主从报错怎么处理

小编给大家分享一下Mysql字符集引发的主从报错怎么处理,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!

收到报警,主从断了



1.查看主从的字符集设置

  • CREATE TABLE `svc_special_important_step_setting` (
    PRIMARY KEY (`svc_special_important_step_setting_id`),
    KEY `idx_CityId` (`city_id`),
    KEY `idx_CompanyId` (`company_id`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='安检关键环节设置';


  • 为什么表的字符集会不一样呢?

3.查看了下库的字符集

  1. mysql> show create database xxxxxx;

  2. +-------------+-------------------------------------------------------------------------+

  3. | Database | Create Database |

  4. +-------------+-------------------------------------------------------------------------+

  5. | ecejservice | CREATE DATABASE `xxxxx` /*!40100 DEFAULT CHARACTER SET utf8 */ |

  6. +-------------+-------------------------------------------------------------------------+

  7. 1 row in set (0.00 sec)


  8. mysql> show create database xxxxxx;

  9. +-------------+-------------------------------------------------------------------------+

  10. | Database | Create Database |

  11. +-------------+-------------------------------------------------------------------------+

  12. | ecejservice | CREATE DATABASE `xxxxxx` /*!40100 DEFAULT CHARACTER SET utf8mb4 */ |

  13. +-------------+-------------------------------------------------------------------------+

主从两个库的字符集都不一样,原因要追溯到历史原因了,两个库的来源不一样,一个来之与xtracebackup 一个来源于mysqldump, 并且来源库的字符集就是不一样的

一个case

  1. master:

  2. mysql> show create database test1234\G
    *************************** 1. row ***************************
    Database: test1234
    Create Database: CREATE DATABASE `test1234` /*!40100 DEFAULT CHARACTER SET utf8mb4 */
    1 row in set (0.00 sec)


  3. slave:

  4. mysql> show create database test1234\G
    *************************** 1. row ***************************
    Database: test1234
    Create Database: CREATE DATABASE `test1234` /*!40100 DEFAULT CHARACTER SET utf8 */
    1 row in set (0.00 sec)

master:建表
CREATE TABLE `test` (
`id` int(11) DEFAULT NULL,
`tname` varchar(20) DEFAULT NULL
) ENGINE=InnoDB



查看主从表的信息:
master:
mysql> show create table test\G
*************************** 1. row ***************************
Table: test
Create Table: CREATE TABLE `test` (
`id` int(11) DEFAULT NULL,
`tname` varchar(20) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4


slave:
mysql> show create table test\G
*************************** 1. row ***************************
Table: test
Create Table: CREATE TABLE `test` (
`id` int(11) DEFAULT NULL,
`tname` varchar(20) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8
1 row in set (0.00 sec)


可以看到:如果建表时不指定字符集会默认以当前database的字符集为准





master:插入数据
mysql> insert into test(id ,tname) values (123,'12314');


查看主从状态:
Replicate_Wild_Ignore_Table:
Last_Errno: 1677
Last_Error: Column 1 of table 'test1234.test' cannot be converted from type 'varchar(80)' to type 'varchar(20)'
Skip_Counter: 0
Exec_Master_Log_Pos: 158988157
Relay_Log_Space: 2240633

解决:修改库的默认字符集吧

mysql> alter database xxxxxx DEFAULT CHARACTER SET utf8mb4;

以上是"Mysql字符集引发的主从报错怎么处理"这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注行业资讯频道!

字符 字符集 主从 来源 篇文章 处理 两个 内容 原因 不怎么 信息 关键 历史 大部分 就是 数据 更多 状态 环节 知识 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 .net获取数据库字段值 工行软件开发中心工软精英 赤峰大晟互联网科技有限公司 安全教育网络安全平台 成都定位软件开发公司电话 ps4怎么改变服务器 东营食品软件开发咨询 30可以几个几个的数据库 长沙正规的软件开发公司 什么是数据库完整性控制 lol韩服几个服务器 游戏服务器连接失败原因 软件开发电脑配置规定 眼镜行业软件开发的行业前景 历史上有名的网络安全事件 一个数据库最少有() 多台服务器可以同时安装吗 网络安全道哥面试阿里 网络安全检测分析 数据库备份介质大全 擎风互联网科技石家庄有限公司 软件开发 申请发明专利 乡镇软件开发工程师职业规划 首选ntp服务器地址 安全教育网络安全平台 嘉博数据库默认下载格式 杭州铭鹏软件开发有限公司 互联网科技只不过是二手车平台 山东手机软件开发制作 云服务器买哪家好
0