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

MariaDB中UUID_TO_BIN返回乱码 求Hex格式输出解决方案

问题排查与解决方法

问题原因

核心差异来自客户端连接的字符集设置,而非数据库/表的字符集本身:

  • 本地Windows环境中,客户端默认使用utf8mb4字符集连接数据库,MariaDB会自动将BINARY(16)类型的输出转换为十六进制字符串(如0x11edbe57536d750480c2c025a57a3115)展示。
  • 生产Linux环境中,客户端使用latin1字符集连接,数据库会把二进制字节直接按latin1编码解析为可见字符,也就是你看到的乱码。
  • 两种环境下的二进制数据本身是完全正确的,所以BIN_TO_UUID能正常还原原始UUID。

无侵入解决方法(无需修改数据库/表字符集)

方法1:查询时手动转换为十六进制

直接用HEX()函数包裹UUID_TO_BIN的结果,强制输出十六进制格式,不受客户端字符集影响:

SELECT HEX(UUID_TO_BIN(UUID(), 0));

方法2:临时修改当前会话的字符集

仅对当前数据库连接生效,不会影响全局配置或其他业务:

-- 临时设置会话字符集为utf8mb4
SET NAMES utf8mb4;
-- 再执行查询即可得到十六进制格式结果
SELECT UUID_TO_BIN(UUID(), 0);

方法3:调整客户端工具的连接字符集

如果是用可视化工具(如Navicat、DBeaver)连接生产库,直接在工具的连接设置中把字符集改为utf8mb4,工具会自动处理二进制数据的显示格式,无需修改数据库配置。

注意事项

不要随意修改数据库或表的全局字符集,这可能引发现有数据的编码兼容性问题,以上方法均为无侵入式操作,安全可靠。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 15:53:17