问题:

由于TimeWise在4.1.0版本修改过团队用户表的 team_id 字段类型,之前是 long 类型,改为 int 类型,而Oracle 不支持在有数据的情况下修改字段类型,所以当数据表存在旧数据时,更新TimeWise 4.1.0及之后的版本,会出现以下报错:

解决方案:

需要数据库管理员对TimeWise数据表进行初始化(方法如下),由于涉及表数据删除,有操作风险建议联系龙智技术支持团队进行协助。

  • 适用场景:针对 Oracle 数据库用户,首先采取简单方案,若失败,则再尝试复杂方案
  • 实施步骤(请务必按步骤实施)
    • 禁用 timewise 插件
    • 执行以下 sql 脚本
      团队与用户关系表:AO_B40E65_WISE_TEAM_USER

      alter table AO_B40E65_WISE_TEAM_USER rename column TEAM_ID to TEAM_ID_TEMP;
      alter table AO_B40E65_WISE_TEAM_USER add TEAM_ID NUMBER(11);
      update AO_B40E65_WISE_TEAM_USER set TEAM_ID = trim(TEAM_ID_TEMP);
      alter table AO_B40E65_WISE_TEAM_USER drop column TEAM_ID_TEMP;


      休假记录表:AO_B40E65_LEAVE_RECORD 

      alter table AO_B40E65_LEAVE_RECORD rename column ISSUE_ID to ISSUE_ID_TEMP;
      alter table AO_B40E65_LEAVE_RECORD add ISSUE_ID NUMBER(20);
      update AO_B40E65_LEAVE_RECORD set ISSUE_ID = trim(ISSUE_ID_TEMP);
      alter table AO_B40E65_LEAVE_RECORD drop column ISSUE_ID_TEMP;


      休假配置表:AO_B40E65_M_LEAVE_CONFIG

      alter table AO_B40E65_M_LEAVE_CONFIG rename column ISSUE_ID to ISSUE_ID_TEMP;
      alter table AO_B40E65_M_LEAVE_CONFIG add ISSUE_ID NUMBER(20);
      update AO_B40E65_M_LEAVE_CONFIG set ISSUE_ID = trim(ISSUE_ID_TEMP);
      alter table AO_B40E65_M_LEAVE_CONFIG drop column ISSUE_ID_TEMP;

    • 启动 timewise 插件,确认页面是否可以正常访问


  • 适用场景
    • 简单方案无法解决问题时,采用复杂方案
    • 客户那边删除 timewise 数据表后,禁用重启插件后,不会自动创建删除的数据,例如清空 timewise 的全局配置表后,重启插件后不会生成初始化数据
  • 实施步骤(请务必按步骤实施)
    • 卸载 timewise 插件    
    • 若需要备份数据
      • 备份需要的数据表
      • 导出 sql 数据时,务必带上字段名称,否则可能遇到字段顺序不一致的问题,导出的 insert 语句示例:insert into tableName(id,name,...) values(...)
    • 删除 timewise 的数据
      • 数据表:删除所有以 AO_B40E65 开头的表,这些都是 timewise 的表
      • 序列:删除所有包含字符串 AO_B40E65 的序列,只有 Oracle 数据需要删除序列
    • 重新安装 timewise 插件,检查插件功能是否正常
    • 禁用插件
    • 恢复数据
      • 若之前备份了数据,则把相关数据插入到对应的表中
    • 重启插件,确认页面和数据是否正常