MariaDB 11.3.2(Windows)HEX()与UNHEX()函数异常咨询
问题分析与解决
问题本质
你遇到的现象并非Windows版本MariaDB的bug,也不是复杂的配置遗漏——核心原因是**binary_as_hex系统变量**的默认配置差异。
原因说明
binary_as_hex是MariaDB 10.5及以上版本引入的系统变量:
- 当变量设为
ON时,UNHEX返回的VARBINARY类型数据会以0x开头的十六进制字面量形式显示 - 官方手册示例基于该变量默认
OFF的场景,此时二进制数据会直接解码为字符串展示
Windows版本的MariaDB 11.3.2默认开启了binary_as_hex,因此你得到的结果和手册示例不符。
解决方法
临时生效(当前会话)
执行以下语句修改会话级变量,之后再运行UNHEX查询即可得到预期的字符串结果:
SET SESSION binary_as_hex = OFF; SELECT UNHEX('4D617269614442');
永久生效(全局配置)
编辑Windows下MariaDB的配置文件(通常为my.ini,位于安装目录的data文件夹或系统默认配置路径),在[mysqld]节点添加以下配置:
binary_as_hex = OFF
保存后重启MariaDB服务,后续所有会话都会默认以字符串格式显示UNHEX结果。
补充验证
可先查询当前变量值确认状态:
SELECT @@binary_as_hex;
返回1表示开启,返回0表示关闭。
内容的提问来源于stack exchange,提问作者MMJ
相关产品推荐
相关产品推荐

