lee 发表于 2020-8-24 21:31:44

深入MySQL--pt-osc改表过程中的中文乱码问题

本帖最后由 lee 于 2020-8-24 21:33 编辑

背景:
下午使用pt-osc工具对线上表进行变更的时候,发现了一个问题,在对latin1字符集进行变更的时候,变更完毕之后的表的中文注释都变成了'?',无法正常显示了。
于是在测试环境上进行了实验。

实验:

mysql> show create table latin_test1\G
*************************** 1. row ***************************
       Table: latin_test1
Create Table: CREATE TABLE `latin_test1` (
`id` int(11) NOT NULL,
`name` varchar(10) DEFAULT NULL COMMENT '任务名称',
PRIMARY KEY (`id`),
) ENGINE=InnoDB DEFAULT CHARSET=latin1
1 row in set (0.00 sec)


# pt指令
pt-online-schema-change --user=bsr --password=xxxxxxxx -h127.0.0.1 -P3306 --alter " ADD index idx_name(name)" D=yeyz,t=latin_test1 --alter-foreign-keys-method=auto --recursion-method=none --print --charset=latin1 --execute

首先创建一张字符集为latin1的表,它包含id和name两个字段,然后对这个表的name字段添加索引,变更的pt指令如上文,其中:
--charset=latin1
当我们变更完成之后,发现变更的新表内容变成:
**** Hidden Message *****

末日流溢 发表于 2021-9-22 16:47:23

ooooooooooooooooooo
页: [1]
查看完整版本: 深入MySQL--pt-osc改表过程中的中文乱码问题