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

如何修改MariaDB 10.6中NVARCHAR列的默认字符集与排序规则

问题根本原因

MariaDB 10.6对NCHAR/NVARCHAR等国家字符类型的默认映射规则做了调整,默认绑定的是utf8(即utf8mb3),该规则独立于全局、库级的默认字符集配置,这是10.5和10.6版本的核心差异。

可用解决方案

  • 方案1:全局永久配置
    编辑MariaDB服务端配置文件(Linux下为/etc/my.cnf或/etc/mysql/mariadb.conf.d/下的配置文件,Windows下为安装目录的my.ini),在[mysqld]配置段添加以下参数:
    character-set-server = utf8mb4
    collation-server = utf8mb4_general_ci
    national_character_set = utf8mb4
    
    保存后重启MariaDB服务,后续所有新建的NVARCHAR列都会默认使用utf8mb4字符集和对应的排序规则。
  • 方案2:指定库/表级字符集(无需修改全局配置)
    如果没有权限修改服务端配置,可以在创建库、表时显式指定字符集,表内的NVARCHAR列会自动继承表级配置:
    创建库时指定:
    CREATE DATABASE ETLBox_DataFlow2 CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
    
    创建表时显式指定表级字符集:
    CREATE TABLE testtable
    (
        col1 NVARCHAR(100) NULL,
        col2 VARCHAR(100)  NULL,
        col3 VARCHAR(100) COLLATE 'utf8mb4_general_ci',
        col4 VARCHAR(100) CHARACTER SET 'utf8mb4'
    ) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
    
  • 方案3:会话级临时生效
    仅需要当前连接生效的话,每次连接数据库后先执行以下语句即可:
    SET NATIONAL_CHARACTER_SET = utf8mb4;
    

验证方法

修改完成后执行以下查询即可确认是否生效:

SELECT COLUMN_NAME, CHARACTER_SET_NAME, COLLATION_NAME FROM information_schema.Columns WHERE TABLE_NAME = 'testtable';

确认col1的CHARACTER_SET_NAME返回值为utf8mb4即配置生效,即可解决MySql Connector 8.0不支持utf8mb3的报错问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 20:09:03