开发者社区> 问答> 正文

mysql中字段类型为text文本存储json格式数据,字段被截断的问题如何处理

mysql中字段类型为text文本存储json格式数据,字段被截断的问题,有什么推荐的尝试方法和建议么!!

展开
收起
1780169608831412 2021-10-13 17:19:17 3620 0
1 条回答
写回答
取消 提交回答
  • 网络规划设计师、敏捷专家、CISP、ITSS服务经理、ACA全科目、ACP4项、ACE、CBP、CDSP、CZTP等。拥有 PRINCE2 Foundation/Practitioner、CCSK、ITIL、ISO27001、PMP等多项国际认证。 专利5+、期刊10+、知识产权师。核心期刊审稿人。

    您好,如下解决方案可以尝试一下: 解决方案

    1 升级 mysql 版本,并将utf8字符集升级到utf8mb4

    升级你的 mysql 到 5.5.3 之后即可,查看当前环境版本:

    select version();
    
    

    MySQL在5.5.3之后增加了这个utf8mb4的编码,mb4就是most bytes 4的意思,专门用来兼容四字节的unicode。好在utf8mb4是utf8的超集,除了将编码改为utf8bp4外不需要做其他转换。当然,为了节省空间,一般情况下使用utf8也就够了。 所以好的技术就是,采用对当前而言最好的解决方案,然后再逐步迭代满足新的需求。

    1.1 直接修改表结构 --修改数据库字符集

    ALTER DATABASE test CHARACTER SET = utf8mb4;
    --修改表字符集
    alter table test convert to character set utf8mb4;
    --修改字符字符集
    ALTER TABLE `test` CHANGE COLUMN `name` `name` varchar(12) CHARACTER SET utf8mb4;
    

    1.2 修改数据库默认配置

    [client]
    default-character-set = utf8mb4
    [mysqld]
    character-set-server=utf8mb4
    collation-server=utf8mb4_unicode_ci
    [mysql]
    default-character-set = utf8mb4
    

    2 修改数据库字段类型 修改字段类型为二进制存储,通过样可以达到目的,进行兼容 --修改字符字符集

    ALTER TABLE `test` CHANGE COLUMN `name` `name` MediumBlob ;
    
    

    3 强行过滤掉生僻字符串 从业务和技术的角度综合考虑,可以做个折中,将生僻字符串提前过滤掉,因为这类字符串本来就使用的很少,即使存进数据库了,展示、查询的时候也会多少有其它的问题,不如直接过滤掉,mysql 不支持四字节的 utf8 一方面可能是历史包袱,另一方面估计也是为了省空间。

    2021-10-13 17:19:49
    赞同 1 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
One Box: 解读事务与分析一体化数据库 HybridDB for MySQL 立即下载
One Box:解读事务与分析一体化数据库HybridDB for MySQL 立即下载
如何支撑HTAP场景-HybridDB for MySQL系统架构和技术演进 立即下载

相关镜像