WSO2 API Manager 3.2.0运行worker和dashboard后指定库表未生成问题
WSO2 API Manager 3.2.0 连接Oracle数据库后指定表未创建的常见原因
- 数据库用户权限不足
你配置的4个数据库对应用户(WSO2_DASHBOARD_DB、BUSINESS_RULES_DB、WSO2_PERMISSIONS_DB、WSO2_METRICS_DB)需要拥有CREATE TABLE、CREATE SEQUENCE、CREATE INDEX的基础权限,同时需要分配对应表空间的写入配额,权限或配额不足会直接导致建表失败。 - 自动建表配置未开启
WSO2默认不会开启生产环境的自动建表逻辑,你需要确认deployment.toml配置中[database_configuration]下的enable_auto_creation = true已配置,同时dashboard、worker组件的单独配置中没有关闭自动DDL执行的参数。 - 数据源配置不完整或异常
你需要确认4个数据库都已完成对应数据源配置,且配置的JNDI名称和组件引用的名称完全一致;另外需确认Oracle驱动包ojdbc8.jar已同时放到APIM服务根目录的lib文件夹、dashboard组件的lib文件夹、worker组件的lib文件夹下,缺少任意一处的驱动包都会导致对应组件无法连接数据库建表。
你提供的WSO2_PERMISSIONS_DB数据源配置参考:name: WSO2_PERMISSIONS_DB description: The datasource used for permission feature jndiConfig: name: jdbc/PERMISSION_DB useJndiReference: true definition: type: RDBMS configuration: jdbcUrl: 'jdbc:oracle:thin:@apigwdb-scan.shoperation.net:1521/APIGWDB' username: 'WSO2_PERMISSIONS_DB' password: 'apigw14' driverClassName: oracle.jdbc.driver.OracleDriver maxPoolSize: 10 idleTimeout: 60000 connectionTestQuery: SELECT 1 FROM DUAL validationTimeout: 30000 isAutoCommit: false connectionInitSql: alter session set NLS_DATE_FORMAT='YYYY-MM-DD HH24:MI:SS' - 自动提交参数冲突
你的配置中isAutoCommit设为false,WSO2部分组件的自动建表逻辑不会主动提交DDL操作,会导致建表操作直接回滚,你可以临时将该参数改为true,启动一次完成建表后再改回false即可。 - Oracle版本兼容性问题
12c之前的Oracle版本对标识符长度限制为30字符,WSO2部分表名超过该长度会直接建表失败;你可以手动执行<APIM_HOME>/dbscripts目录下对应数据库的Oracle DDL脚本,排查具体报错。
内容的提问来源于stack exchange,提问作者Tohid Makari
相关产品推荐
相关产品推荐

