You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ubuntu环境下MariaDB无法保存utf8mb4_unicode_ci值,如何排查?

排查步骤

1. 验证数据库连接字符集

登录MariaDB执行以下命令,确认连接相关字符集参数为utf8mb4:

SHOW VARIABLES LIKE 'character_set%';
SHOW VARIABLES LIKE 'collation%';

重点检查character_set_client、character_set_connection、character_set_results这三个变量,必须全部为utf8mb4。如果不是,说明连接时未指定正确字符集:

  • 命令行客户端连接时需加参数:mysql --default-character-set=utf8mb4 -u 用户名 -p
  • 或在配置文件/etc/mysql/mariadb.conf.d/50-client.cnf的[client]段添加:
    default-character-set = utf8mb4
    

2. 确认表及字段的实际字符集

执行命令检查表的真实配置,确保user_name字段字符集为utf8mb4_unicode_ci:

SHOW CREATE TABLE user_saver;

如果字段字符集不是utf8mb4,需重新指定字段字符集:

ALTER TABLE user_saver MODIFY COLUMN user_name varchar(254) NOT NULL CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

3. 检查全局字符集配置

编辑MariaDB服务端配置文件/etc/mysql/mariadb.conf.d/50-server.cnf,在[mysqld]段添加或修改:

character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci
init_connect='SET NAMES utf8mb4'

修改后重启服务:

sudo systemctl restart mariadb

4. 修正插入语句语法

你当前的插入语句缺少列名指定,存在语法错误,正确写法应为:

INSERT INTO user_saver (user_id, user_name) VALUES (1, '𝕚𝕧𝕒𝕟ღ');

虽然语法错误通常不直接导致字符集报错,但可能引发意外的字符编码处理问题。

5. 检查系统环境编码

执行命令查看系统 locale 设置,确保为UTF-8编码:

locale

若输出中LANG、LC_ALL等不是UTF-8结尾的编码,需修改系统 locale:

sudo locale-gen en_US.UTF-8
sudo update-locale LANG=en_US.UTF-8

重启终端后重新测试插入操作。


内容的提问来源于stack exchange,提问作者KelvinCodes

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.15 03:45:09