WSO2 IS 5.11.0切换JDBC用户存储至PostgreSQL启动失败报错
问题分析与解决
你遇到的是WSO2 Identity Server 5.11.0切换PostgreSQL作为JDBC用户存储时,启动阶段插入admin用户违反um_user表um_user_id列非空约束的问题。从错误日志能看到,插入语句未给um_user_id赋值,但该列被设置为非空且无默认自增规则,导致插入失败。
解决步骤
1. 使用官方脚本初始化正确的表结构
WSO2为PostgreSQL预定义了包含自增序列、约束的用户存储表结构,不要手动创建表。找到<IS_HOME>/dbscripts/userstore/postgresql.sql脚本,在你的PostgreSQL数据库中执行该脚本,它会自动创建um_user等表,并为um_user_id配置正确的自增序列。
2. 完善JDBC用户存储配置
在deployment.toml中补充完整的用户存储配置,确保参数适配PostgreSQL:
[user_store] type = "database" database = "postgresql" url = "jdbc:postgresql://<你的PostgreSQL地址>:<端口>/<数据库名>" username = "<数据库用户名>" password = "<数据库密码>" driver = "org.postgresql.Driver" [user_store.properties] # 适配PostgreSQL的主键生成策略 UserIDGeneratorClass = "org.wso2.carbon.user.core.util.DefaultUserIDGenerator" SequenceEnabled = "true" SequenceName = "um_user_seq"
3. 清理冲突表(若已手动创建)
如果之前手动创建过um_user表,先删除该表及关联序列,再执行官方脚本,避免结构冲突。
完成以上操作后,重新启动WSO2 Identity Server,即可正常初始化admin用户,不会再触发非空约束异常。
内容的提问来源于stack exchange,提问作者user5919369
相关产品推荐
相关产品推荐

