pt-online-schema-change工具的一个选项
admin
2023-05-07 09:42:03
0


使用pt-online-schema-change变更数据表某字段长度, 完成后, 查看表结构定义, 却出现了乱码...



数据表zzzz的表结构.

mysql> show create table zzzz \G

*************************** 1. row ***************************

       Table: zzzz

Create Table: CREATE TABLE `zzzz` (

  `id` int(11) NOT NULL AUTO_INCREMENT,

  `name` varchar(10) NOT NULL DEFAULT '' COMMENT '物品名称',

  `category` varchar(10) NOT NULL DEFAULT '' COMMENT '物品分类',

  PRIMARY KEY (`id`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='Product infomation'

1 row in set (0.00 sec)


变更字段name的长度为20.

$ pt-online-schema-change --alter "modify name varchar(20) not null default '' comment '物品名称'" --nocheck-replication-filters --recursion-method=processlist h=192.168.4.45,P=3316,u=mha_mgr,p=123456,D=test,t=zzzz --execute

Found 1 slaves:

db02 -> 192.168.4.46:3316

Will check slave lag on:

db02 -> 192.168.4.46:3316

Operation, tries, wait:

  analyze_table, 10, 1

  copy_rows, 10, 0.25

  create_triggers, 10, 1

  drop_triggers, 10, 1

  swap_tables, 10, 1

  update_foreign_keys, 10, 1

Altering `test`.`zzzz`...

Creating new table...

Created new table test._zzzz_new OK.

Waiting forever for new table `test`.`_zzzz_new` to replicate to db02...

Altering new table...

Altered `test`.`_zzzz_new` OK.

2018-01-15T17:31:27 Creating triggers...

2018-01-15T17:31:27 Created triggers OK.

2018-01-15T17:31:27 Copying approximately 1 rows...

2018-01-15T17:31:28 Copied rows OK.

2018-01-15T17:31:28 Analyzing new table...

2018-01-15T17:31:28 Swapping tables...

2018-01-15T17:31:28 Swapped original and new tables OK.

2018-01-15T17:31:28 Dropping old table...

2018-01-15T17:31:28 Dropped old table `test`.`_zzzz_old` OK.

2018-01-15T17:31:28 Dropping triggers...

2018-01-15T17:31:29 Dropped triggers OK.

Successfully altered `test`.`zzzz`.


完成后, 查看表结构, 发现字段的中文注释都成了乱码.

mysql> show create table zzzz \G

*************************** 1. row ***************************

       Table: zzzz

Create Table: CREATE TABLE `zzzz` (

  `id` int(11) NOT NULL AUTO_INCREMENT,

  `name` varchar(20) NOT NULL DEFAULT '' COMMENT '?‰??“??§°',

  `category` varchar(10) NOT NULL DEFAULT '' COMMENT '????',

  PRIMARY KEY (`id`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='Product infomation'

1 row in set (0.00 sec)


解决方法, 使用选项--charset(其文档说明: Default character set. If the value is utf8, sets Perl’s binmode on STDOUT to utf8, passes the mysql_enable_utf8 option to DBD::mysql, and runs SET NAMES UTF8 after connecting to MySQL. Any other value sets binmode on STDOUT without the utf8 layer, and runs SET NAMES after connecting to MySQL.), 指明字符集为utf8mb4.


$ pt-online-schema-change --alter "modify name varchar(20) not null default '' comment '物品名称'" --charset=utf8mb4 --nocheck-replication-filters --recursion-method=processlist h=192.168.4.45,P=3316,u=mha_mgr,p=123456,D=test,t=zzzz --execute


瞧, 正常了.

mysql> show create table zzzz \G

*************************** 1. row ***************************

       Table: zzzz

Create Table: CREATE TABLE `zzzz` (

  `id` int(11) NOT NULL AUTO_INCREMENT,

  `name` varchar(20) NOT NULL DEFAULT '' COMMENT '物品名称',

  `category` varchar(10) NOT NULL DEFAULT '' COMMENT '????',

  PRIMARY KEY (`id`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='Product infomation'

1 row in set (0.00 sec)



关于pt-online-schema-change工具的更多使用细节, 可参考InnoDB Online DDL续.


相关内容

热门资讯

副秘书长在以色列机场遭扣留,联... 新华社联合国5月13日电 联合国秘书长副发言人哈克13日就联合国负责安全和安保事务的副秘书长吉勒·米...
【珠城“健”闻】市三院引进非侵... 前沿科技赋能: 构建大脑与肢体的康复通路 技术优势对比: 与传统被动康复训练相比的显著突破 1.意...
从微信状态看社交边界 钟 颐 5月11日深夜,“微信状态 访客记录”话题冲上微博热搜,引发网友热议。微信方面表示,该功能仅...
中国科学家成功研制“九章四号”... 4月10日拍摄的“九章四号”量子计算原型机局部。 记者5月13日从中国科学技术大学获悉,该校潘建伟、...
江苏睿恩新能源申请正极极片及其... 国家知识产权局信息显示,江苏睿恩新能源科技有限公司申请一项名为“一种正极极片及其制备方法、锂离子电池...
流言|2026年地球会失重7秒... 流言:2026年8月12日地球将失重7秒、数千万人因此伤亡。 (图片由AI生成) 真相:“地球重...
从渠道赋能到行业基础设施 互联... 2025年,伴随数智技术的加速渗透,保险业的获客方式、决策逻辑乃至服务形态,都在被重新定义,互联网保...
人形机器人绕不开的坎:续航问题... 这两年,关于人形机器人的故事已经被讲了很多:AGI 的终极载体、万亿美元的劳动力替代、工厂和家庭的全...
合成生命重要突破 中国团队首次... 中新网北京5月13日电 (记者 孙自法)构建能够模拟天然细胞分裂行为的人工细胞,是合成生命研究至关重...
“九章四号”问世 中国科学家再... 4月10日拍摄的“九章四号”量子计算原型机局部。新华社记者 周牧 摄 新华社合肥5月13日电(记者陈...