Enterprise Architect中包图标出现红色标记是什么含义
Enterprise Architect 远程PostgreSQL仓库包红色标记问题解决
标记含义
包图标上的红色标记是Enterprise Architect(以下简称EA)的仓库包异常状态标识,区别于正常编辑场景下的蓝色用户锁、黄色受控锁,该标记代表对应包的状态元数据和仓库服务端记录不一致,包处于不可正常编辑/迁入迁出的异常状态。
常见触发原因
- 编辑该包的客户端发生崩溃、网络闪断断开连接,未正常执行释放锁、提交包的操作,PostgreSQL库中残留无效锁记录,本地缓存和服务端状态不匹配
- 访问仓库使用的ODBC驱动与PostgreSQL服务端版本不兼容,读写包状态字段时发生写入失败、值截断,导致包状态字段为EA无法识别的异常值
- 仓库侧执行过手动数据恢复、批量表修改操作,导致
t_package、t_seclocks核心表中对应包的锁状态、版本字段值不符合EA的状态校验规则 - 多用户同时对同一包执行迁入、迁出、重命名操作时发生事务冲突,事务回滚不完整,残留错误状态标记
排查解决步骤
按照从易到难的顺序操作,每一步完成后重启EA检查标记是否消失:
- 执行项目完整性校验
打开EA主菜单,进入Project > Data Management > Project Integrity Check,勾选所有包状态、锁记录相关的校验选项,执行全项目扫描,扫描完成后直接选择修复检测到的所有不一致问题。 - 清理残留异常锁
使用仓库管理员账号登录项目,打开Project > Security > Manage Locks,筛选对应异常包的所有锁记录,将不属于当前正在进行的编辑会话的锁全部手动释放。
如果项目开启了版本控制集成(对接SVN/Git/TFS),选中异常包后右键选择Package Control > Get All Latest强制拉取服务端最新版本,再执行Package Control > Check In All同步状态。 - 数据库侧修复状态字段
操作前必须全量备份PostgreSQL仓库数据库,避免数据损坏。
连接PostgreSQL库后执行两类检查:- 查询
t_package表中对应包的记录,正常未锁定的包Locked字段值应为0,若字段值为2或其他非0/1的异常值,手动修正为0;版本控制场景下清空残留的无效锁用户名、锁时间字段值 - 查询
t_seclocks表,删除所有关联该包ID的非活跃锁记录
- 查询
- 校验ODBC连接配置
确认本机安装的PostgreSQL ODBC驱动大版本与服务端版本一致,ODBC数据源配置中取消非默认的字符集自动转换、旧语法兼容选项,重新测试连接后再加载项目。
异常标记参考截图:
内容的提问来源于stack exchange,提问作者euroluar
相关产品推荐
相关产品推荐

