博客
关于我
MySQL设置真正的UTF-8
阅读量:199 次
发布时间:2019-02-28

本文共 795 字,大约阅读时间需要 2 分钟。

MariaDB中存储UTF-8字符串时出现了一个奇怪的错误:“Incorrect string value: ‘😃 …’ for column ‘summary’ at row 1”。尽管我使用了UTF-8编码的客户端、服务器以及数据库,保存的字符串“? …”也是合法的UTF-8字符,但问题仍然存在。

问题的根源在于MySQL的“utf8”编码实际上并非真正的UTF-8。与真正的UTF-8相比,“utf8”只支持每个字符最多三个字节,而UTF-8支持每个字符最多四个字节。因此,为了避免类似的问题,应该改用MySQL的“utf8mb4”编码。

以下是修复和优化数据库的步骤:

  • 修改默认编码:

    • 打开/etc/my.cnf文件,找到或添加以下配置:
      [client]default-character-set = utf8mb4[mysql]default-character-set = utf8mb4[mysqld]character-set-client-handshake = FALSEcharacter-set-server = utf8mb4collation-server = utf8mb4_unicode_ci
  • 验证设置:

    • 运行以下MySQL命令,确认编码设置已正确应用:
      mysql> SHOW VARIABLES WHERE Variable_name LIKE 'character_set%';
  • 修复和优化所有表:

    • 使用mysqlcheck命令一次性完成:
      mysqlcheck -u root -p --auto-repair --optimize --all-databases
    • 这将根据设置自动修复和优化所有数据库中的表。
  • 请注意:在MySQL中,永远不要使用“utf8”编码。如果您仍然遇到类似问题,请确保数据库和客户端都使用UTF-8mb4编码。

    转载地址:http://qpai.baihongyu.com/

    你可能感兴趣的文章
    PostgreSQL学习总结(2)—— PostgreSQL 语法
    查看>>
    PostgreSQL学习总结(3)—— PostgreSQL 数据类型
    查看>>
    Qt开发——圆面积计算器
    查看>>
    PostgreSQL学习总结(5)—— PostgreSQL table 创建与删除
    查看>>
    PostgreSQL学习总结(6)—— PostgreSQL 模式(SCHEMA)详解
    查看>>
    PostgreSQL学习总结(7)—— PostgreSQL 语句 INSERT INTO、SELECT、UPDATE、DELETE 等学习
    查看>>
    PostgreSQL学习总结(8)—— PostgreSQL 基于数据库和基于模式(schema)的多租户分析
    查看>>
    PostgreSQL学习总结(9)—— PostgreSQL 运算符与表达式
    查看>>
    PostGreSql学习笔记001---PostgreSQL10.4安装(Windows)_支持PostGreGis_PostJDBC
    查看>>
    PostGreSql学习笔记002---Navicat Premium中管理PostGreSql 错误:字段rolcatupdate 不存在
    查看>>
    PostgreSQL学习笔记:PostgreSQL vs MySQL
    查看>>
    PostgreSQL实现shape数据转geojson数据(地图工具篇.18)
    查看>>
    PostgreSQL导入shape数据(地图工具篇.10)
    查看>>
    PostGreSql工作笔记003---在Navicat中创建数据库时报错rolcatupdate不存在_具体原因看其他博文_这里使用pgAdmin4创建管理postgre
    查看>>
    PostGreSql工作笔记004---PostGreSql修改密码_windows和linux下修改
    查看>>
    Postgresql常用命令行操作_以及Navicat操作PostGis时的问题_自动截取长度_WKB structure does not match exp---PostgreSQL工作笔记005
    查看>>
    PostgreSQL忘记密码
    查看>>
    PostgreSQL数据库pg_dump命令行不输入密码的方法
    查看>>
    PostgreSQL新手入门
    查看>>
    postgresql树状结构查询示例
    查看>>