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

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

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

实验:

  1. mysql> show create table latin_test1\G
  2. *************************** 1. row ***************************
  3.        Table: latin_test1
  4. Create Table: CREATE TABLE `latin_test1` (
  5.   `id` int(11) NOT NULL,
  6.   `name` varchar(10) DEFAULT NULL COMMENT '任务名称',
  7.   PRIMARY KEY (`id`),
  8. ) ENGINE=InnoDB DEFAULT CHARSET=latin1
  9. 1 row in set (0.00 sec)
复制代码



# pt指令
  1. 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
当我们变更完成之后,发现变更的新表内容变成:
游客,如果您要查看本帖隐藏内容请回复

标签: 暂无标签
lee

写了 75 篇文章,拥有财富 290,被 8 人关注

转播转播 分享分享 分享聚知识
回复

使用道具

成为第一个吐槽的人

您需要登录后才可以回帖 登录 | 加入社区

本版积分规则

意见
反馈