介绍
这篇文章将为大家详细讲解有关MySQL生僻字插入失败如何解决,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。
下面是在虚拟机里复现的场景:
step1,模拟原始表结构字符集环境:
使用测试; 创建表的t1 ( “id”int(10)不是零AUTO_INCREMENT, ‘real_name varchar(255)默认字符集utf8 & # 39; & # 39;评论& # 39;姓名& # 39;, “尼克”varchar(100)核对utf8mb4_unicode_ci默认& # 39;& # 39;评论& # 39;昵称& # 39;, 主键(“id”) )引擎=InnoDBAUTO_INCREMENT=10默认字符集=utf8mb4整理=utf8mb4_unicode_ci评论=& # 39;会员卡& # 39;;
步骤2,插入生僻字(使用sqlyog模拟):
1,先模拟线上环境,设置下字符集:
2,插入生僻字(生僻字可以参考:http://www.qqxiuzi.cn/zh/hanzi-unicode-bianma.php?zfj=kzb& ks=24 e20& js=257 e3)
我们尝试插入王(在单词里面按住alt,输入152964)。可以看到插入失败了。
,我们修改real_name的字符集:
使用测试; alter table t1改变real_name real_name varchar(255)字符集utf8mb4默认& # 39;& # 39;评论& # 39;姓名& # 39;,
如果是线上大表的话,可以使用pt-osc来处理,命令如下:
pt-online-schema-change -uroot - h localhost,改变=?改变real_name real_name varchar(255)字符集utf8mb4默认& # 39;& # 39;评论& # 39;姓名& # 39;“;D=测试,t=t1——no-check-replication-filters alter-foreign-keys-method汽车——recursion-method==没有——安静——charset=utf8mb4——即将
pt-online-schema-change -uroot - h localhost,改变=?改变real_name real_name varchar(255)字符集utf8mb4默认& # 39;& # 39;评论& # 39;姓名& # 39;“;D=测试,t=t1——no-check-replication-filters alter-foreign-keys-method汽车——recursion-method==没有——安静——charset=utf8mb4——执行
第四,再次插入实验:
1,先设置下字符集:
2,再次插入,可以看到插入成功了。
在命令行里面查询也是没有乱码了: