MySQL字符集改造

现象:

MySQL中原来的字符集为UTF8,某天业务中出现Emoji表情:😊(用户昵称包含、评论中包含),无法兼容导致报错。
原因:一个英文字符占用一个字节的存储空间,一个中文(含繁体)占用三个字节的存储空间,在MySQL中的“UTF8"编码只支持最大3字节每字符,而Emoji表情占4个字节

解决方法:

MySQL中表和字段的字符集改为UTF8mb4。

解决过程:

1.具体修改语句如下,修改表默认字符集(包含已有列)
alter table shedlock  CONVERT TO character set utf8mb4 COLLATE utf8mb4_bin;
如下语句仅修改表新增列的默认定义(不包含已有列)
alter table table_name character set utf8mb4;

扩展:

批量修改
SELECT 
  CONCAT(
    'alter table ',
    table_schema,
    '.',
    table_name,
    ' modify ',
    column_name,
    ' ',
    column_type,
    ' COLLATE utf8mb4_0900_ai_ci ',
    ' comment ''',
    column_comment,
    ''';'
  ) AS cc 
FROM
  information_schema.`COLUMNS` a 
WHERE table_schema = '数据库名'
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值