WSO2 AM 3.0.0升级4.1.0执行Step4.4报错 无法完成无错迁移
问题根因
所有报错的核心触发点是日志里的第一条数据库错误:Table 'apim_db.AM_SYSTEM_CONFIGS' doesn't exist。
后续出现的OAuth认证拦截器空指针、多个web应用(admin、devops v0、devportal)部署失败、组件初始化失败全都是连锁反应:APIM核心组件因为读取不到系统配置表初始化失败,导致依赖核心组件的认证拦截器实例化时拿到空值触发空指针,最终所有关联web上下文启动失败。AM_SYSTEM_CONFIGS是WSO2 API Manager 4.1.0版本新增的系统配置表,3.0.0版本不存在该表,出现这个错误说明升级过程中漏执行了4.1.0版本对应的APIM数据库DDL脚本。
修复步骤
- 立即终止当前启动异常的WSO2 APIM 4.1.0进程
- 登录Amazon RDS for MySQL数据库,切换到
apim_db库,按升级顺序执行对应版本的数据库脚本:- 先确认3.0.0升级到4.1.0路径上的所有增量DDL脚本都已执行,不要跳版本
- 最后执行4.1.0版本对应的MySQL建表脚本,脚本位于4.1.0安装包的
dbscripts/apimgt/mysql.sql路径下
- 执行校验SQL确认表存在:
SHOW TABLES LIKE 'AM_SYSTEM_CONFIGS';,同时确认APIM配置里的数据库连接账号对该表有SELECT、INSERT、UPDATE权限 - 清理旧的启动缓存:删除
<WSO2_AM_4.1.0_INSTALL_PATH>/tmp和<WSO2_AM_4.1.0_INSTALL_PATH>/work目录下的所有文件 - 重新启动WSO2 APIM服务,观察启动日志即可
额外检查:启动前建议同时核对共享数据库、用户数据库的升级脚本是否全部执行完成,避免后续启动时出现其他缺表、缺字段的同类报错。
内容的提问来源于stack exchange,提问作者shyam
相关产品推荐
相关产品推荐

