character_account_data 帐户缓存数据表

存储角色的客户端缓存数据(UI布局、宏命令等)

官方文档来源

表概述

character_account_data 表是魔兽世界客户端数据同步系统的核心。它存储角色在不同电脑登录时需要的UI设置、宏命令、动作条布局等缓存数据,使玩家在任何电脑登录同一个角色时都能保持一致的游戏体验。

通过 data 字段(BLOB 类型) 存储压缩后的二进制数据。不同的 type 值代表不同种类的缓存数据。character_account_data 实现"云同步"功能——玩家的UI偏好设置存储于服务器端,换电脑登录后自动恢复。

表结构

字段名类型说明
guidINT UNSIGNED角色全局唯一标识符(联合主键)
typeTINYINT UNSIGNED缓存数据类型(联合主键)
timeINT UNSIGNED数据最后更新时间(Unix时间戳)
dataBLOB压缩后的缓存数据(二进制格式)

核心字段说明

type 缓存类型详解

type 值枚举常量存储内容说明
0GLOBAL_CACHE_MASK全局配置缓存跨角色的通用UI/系统设置
1CHARACTER_CACHE_MASK角色配置缓存当前角色的UI布局和宏命令
2ACCOUNT_CACHE_MASK帐号级配置缓存同帐号下所有角色共享的配置
3BINDING_CACHE_MASK按键绑定缓存键盘快捷键和鼠标绑定配置
4MACRO_CACHE_MASK宏命令缓存角色专用的宏命令文本

data BLOB 字段

data 字段存储由魔兽世界客户端序列化和压缩后的二进制数据。数据经过压缩(通常使用 zlib/deflate),格式由客户端版本决定。直接修改可能导致客户端崩溃或数据丢失,不建议手动解读或修改。

time 字段

time 为 Unix 时间戳,记录该类型数据最后一次被客户端上传的时间。如需清除某个角色的UI设置(解决UI错误),直接删除 type=1 的记录即可,角色重新登录后客户端会使用默认配置。

实际案例

查看角色的缓存数据状态

-- 查询角色的所有缓存数据类型和更新时间 SELECT type, CASE type WHEN 0 THEN '全局配置' WHEN 1 THEN '角色配置' WHEN 2 THEN '帐号配置' WHEN 3 THEN '按键绑定' WHEN 4 THEN '宏命令' END AS 缓存类型, FROM_UNIXTIME(time) AS 更新时间, LENGTH(data) AS 数据大小 FROM character_account_data WHERE guid = 1 ORDER BY type;

清除角色的UI配置(修复UI错误)

-- 清除角色1的宏命令(type=4) DELETE FROM character_account_data WHERE guid = 1 AND type = 4; -- 完全重置UI布局和配置(type=1) DELETE FROM character_account_data WHERE guid = 1 AND type = 1;

查找缓存数据异常大的角色

-- 找出宏命令数据过大的角色(可能有宏刷屏或配置错误) SELECT c.name, cad.type, LENGTH(cad.data) AS 数据大小, FROM_UNIXTIME(cad.time) AS 更新时间 FROM character_account_data cad JOIN characters c ON c.guid = cad.guid WHERE LENGTH(cad.data) > 50000 ORDER BY LENGTH(cad.data) DESC;

常见问题

Q1: 如何让所有角色共享同一套宏命令?
魔兽世界的宏命令分为"通用宏"和"角色专用宏"。通用宏存储于 type=2(帐号配置),所有角色共享;角色专用宏存储于 type=4(宏命令缓存)。如需跨角色共享,在游戏内的宏编辑界面选择"通用宏"标签页创建。
Q2: 删除 character_account_data 中的记录安全吗?
安全,但要确保角色离线。删除后角色重新登录时客户端会使用默认UI配置。如果只删除特定 type 的记录,其他类型的配置不受影响。
Q3: data 字段可以手动修改吗?
不建议。data 是客户端序列化压缩的二进制数据,格式与客户端版本严格对应。手动修改很可能导致客户端崩溃或数据损坏。如需调整宏命令或UI设置,请通过游戏内界面操作。