本帖最后由 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
当我们变更完成之后,发现变更的新表内容变成:
|
|