• Mysql-Incorrect string value


    【问题描述】

    com.mysql.jdbc.MysqlDataTruncation: Data truncation: Incorrect string value: 'xF0x9Fx8Ex89' for column 'title' at row 1

       

    【问题原因】

    数据库中有的表字段,有4个字节而mysqlutf8字符集最大只支持3个字节,因而出错。

       

    【解决方法】

    mysql中有一个utf8字符集的超集utf8mb4,该字符集允许存储的字符最多为4个字节,那么它就可以满足对Emoji表情的存储。所以我们只需要将对应的字符集改为utf8mb4即可。

       

    原有字符集可以通过以下方式查看:

    SHOW VARIABLES WHERE Variable_name LIKE 'character\_set\_%' OR Variable_name LIKE 'collation%';

       

    修改my.cnf配置

    character_set_server=utf8mb4

    collation-server=utf8mb4_unicode_ci

       

    简单一点,这个时候可以直接将整库删除后重建。

    如果库中已经有业务数据,可以通过以下方式修改。

       

    -- 修改整库的字符集

    ALTER DATABASE <database_name> CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci

       

    -- 修改表的字符集

    ALTER TABLE <table_name> CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

       

    -- 修改单个字段的字符集

    ALTER TABLE <table_name> CHANGE src_column_name <target_column_name> VARCHAR(600) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

  • 相关阅读:
    Fraction to Recurring Decimal
    Compare Version Numbers
    回溯法 -数据结构与算法
    Maximum Gap
    STL——迭代器的概念
    STL——内存基本处理工具
    STL——空间的配置和释放std::alloc(第一级配置器和第二级配置器)
    careercup-中等难度 17.12
    careercup-中等难度 17.11
    careercup-中等难度 17.9
  • 原文地址:https://www.cnblogs.com/liuxia912/p/12965075.html
Copyright © 2020-2023  润新知