更新时间:2024-09-12 GMT+08:00
分享

如何确保GaussDB(for MySQL)标准版数据库字符集正确

GaussDB(for MySQL)标准版的“utf8”只支持每个字符最多三个字节,而真正的UTF-8是每个字符最多四个字节。包括Emoji表情(Emoji是一种特殊的Unicode编码,常见于手机上),和很多不常用的汉字,以及任何新增的Unicode字符等都无法使用MySQL的utf8字符集存储。在2010年MySQL发布了“utf8mb4”的字符集。MySQL在5.5.3之后增加了utf8mb4的编码,兼容四字节的unicode。utf8mb4是utf8的超集,除了将编码改为utf8mb4外不需要做其他转换。

操作步骤

  1. 登录GaussDB(for MySQL)标准版实例。
  2. 执行如下SQL查看数据库字符集。

    show variables like '%character%';

  3. 执行如下SQL查看数据库的编码。

    show variables like 'collation%';

  4. 修改字符集为utf8mb4。

    1. 执行如下SQL更改数据库字符集。

      ALTER DATABASE DATABASE_NAME DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;

    2. 执行如下SQL更改表字符集。
      ALTER TABLE TABLE_NAME DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;

      SQL语句修改的是表的字符集,表里面字段的字符集并没有被修改。

    3. 执行如下SQL更改表中所有字段的字符集。

      ALTER TABLE TABLE_NAME CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;

    • character_set_clientcharacter_set_connection以及character_set_results是客户端的设置。
    • character_set_systemcharacter_set_server以及character_set_database是服务器端的设置。
    • 服务器端的参数优先级是:character_set_database>character_set_server>character_set_system

相关文档