深入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 *****
ooooooooooooooooooo
页:
[1]