由于 "Unknown column 'UM_USER_ID' in 'field list'",将 WSO2 IS 5.9 升级到 WSO2 IS 5.10 失败
Upgrading WSO2 IS 5.9 to WSO2 IS 5.10 failed due to "Unknown column 'UM_USER_ID' in 'field list'"
我正在尝试将我现有的 WSO2 IS 5.9 实例升级到 WSO2 IS 5.10。但是,迁移失败并显示 JDBC 错误 "Unknown column 'UM_USER_ID' in 'field list",即使我完全按照 https://is.docs.wso2.com/en/latest/setup/migration-guide 的迁移指南进行操作。
从外观上看,WSO2 似乎在 运行 升级数据库的实际迁移任务之前就崩溃了,最终 'UM_USER_ID' 列不存在。
不知道有没有人有线索?
以下是我的环境和实际错误的详细信息:
- 服务器:Ubuntu仿生 18.04.3
- OpenJDK 1.8.0.242
- MySQL 5.7.29。我已经从 sql 模式中删除了 NO_ZERO_DATE。
- mysql-连接器-java-5.1.47-bin.jar
- wso2is 迁移资源版本 1.0.82。我确实查看了此迁移资源版本中的数据库脚本并进行了一些更改以解决一些问题。
以下是日志文件中的实际异常:
TID:[-1234] [] [2020-04-03 17:11:25,228] [] INFO {org.wso2.carbon.core.internal.CarbonCoreActivator} - 启动 WSO2 Carbon ...
TID:[-1] [] [2020-04-03 17:11:24,348] [] INFO {org.ops4j.pax.logging.spi.support.EventAdminConfigurationNotifier} - 发送事件管理员通知(配置成功)到 org/ops4j/pax/logging/Configuration
TID:[-1234] [] [2020-04-03 17:11:25,267] [] INFO {org.wso2.carbon.core.internal.CarbonCoreActivator} - 操作系统:Linux 4.15.0-76-generic , AMD64
TID:[-1234] [] [2020-04-03 17:11:25,268] [] 信息 {org.wso2.carbon.core.internal.CarbonCoreActivator} - Java 主页:/usr/lib/jvm/java-8-openjdk-amd64/jre
TID:[-1234] [] [2020-04-03 17:11:25,271] [] 信息 {org.wso2.carbon.core.internal.CarbonCoreActivator} - Java 版本:1.8.0_242
TID:[-1234] [] [2020-04-03 17:11:25,273] [] INFO {org.wso2.carbon.core.internal.CarbonCoreActivator} - Java VM:OpenJDK 64 位服务器 VM 25.242- b08,私人建筑
TID:[-1234] [] [2020-04-03 17:11:25,275] [] 信息 {org.wso2.carbon.core.internal.CarbonCoreActivator} - Carbon 主页:/opt/wso2is
TID:[-1234] [] [2020-04-03 17:11:25,288] [] 信息 {org.wso2.carbon.core.internal.CarbonCoreActivator} - Java 临时目录:/opt/wso2is/tmp
TID:[-1234] [] [2020-04-03 17:11:25,288] [] 信息 {org.wso2.carbon.core.internal.CarbonCoreActivator} - 用户:root,en-US,Etc/UTC
TID: [-1] [] [2020-04-03 17:11:25,769] [] INFO {org.wso2.carbon.crypto.provider.internal.DefaultCryptoProviderComponent} - 'CryptoService.Secret' 属性 尚未设置。 'org.wso2.carbon.crypto.provider.SymmetricKeyInternalCryptoProvider' 不会注册为内部加密提供商。如果提供者需要注册,请设置秘密。
TID: [-1] [] [2020-04-03 17:11:26,187] [] INFO {org.wso2.carbon.event.output.adapter.kafka.internal.ds.KafkaEventAdapterServiceDS} - 成功部署Kafka输出事件适配器服务
TID:[-1] [] [2020-04-03 17:11:27,225] [] INFO {org.wso2.carbon.identity.oauth.uma.grant.internal.UMA2GrantServiceComponent} - 策略评估器注册成功:DefaultPolicyEvaluator
TID:[-1] [] [2020-04-03 17:11:27,225] [] INFO {org.wso2.carbon.identity.oauth.uma.grant.internal.UMA2GrantServiceComponent} - UMA Grant 组件已成功激活。
TID:[-1234] [] [2020-04-03 17:11:27,844] [] INFO {org.wso2.carbon.ldap.server.DirectoryActivator} - 嵌入式 LDAP 已禁用。
TID:[-1] [] [2020-04-03 17:11:27,887] [] 信息 {org.wso2.carbon.mex.internal.Office365SupportMexComponent} - Office365Support MexServiceComponent 包已成功激活。
TID:[-1] [] [2020-04-03 17:11:27,903] [] INFO {org.wso2.carbon.mex2.internal.DynamicCRMCustomMexComponent} - DynamicCRMSupport MexServiceComponent 包已成功激活。
TID:[-1234] [] [2020-04-03 17:11:31,884] [] 错误 {org.wso2.carbon.user.core.common.DefaultRealm} - nullType class java.lang.reflect.InvocationTargetException org.wso2.carbon.user.core.UserStoreException: nullType class java.lang.reflect.InvocationTargetException
在 org.wso2.carbon.user.core.common.DefaultRealm.createObjectWithOptions(DefaultRealm.java:397)
在 org.wso2.carbon.user.core.common.DefaultRealm.initializeObjects(DefaultRealm.java:224)
在 org.wso2.carbon.user.core.common.DefaultRealm.init(DefaultRealm.java:129)
在 org.wso2.carbon.user.core.common.DefaultRealmService.initializeRealm(DefaultRealmService.java:276)
在 org.wso2.carbon.user.core.common.DefaultRealmService.(DefaultRealmService.java:102)
在 org.wso2.carbon.user.core.common.DefaultRealmService.(DefaultRealmService.java:115)
在 org.wso2.carbon.user.core.internal.Activator.startDeploy(Activator.java:72)
在 org.wso2.carbon.user.core.internal.BundleCheckActivator.start(BundleCheckActivator.java:61)
在 org.eclipse.osgi.internal.framework.BundleContextImpl$3.run(BundleContextImpl.java:842)
在 org.eclipse.osgi.internal.framework.BundleContextImpl$3.run(BundleContextImpl.java:1)
在 java.security.AccessController.doPrivileged(本机方法)
在 org.eclipse.osgi.internal.framework.BundleContextImpl.startActivator(BundleContextImpl.java:834)
在 org.eclipse.osgi.internal.framework.BundleContextImpl.start(BundleContextImpl.java:791)
在 org.eclipse.osgi.internal.framework.EquinoxBundle.startWorker0(EquinoxBundle.java:1013)
在 org.eclipse.osgi.internal.framework.EquinoxBundle$EquinoxModule.startWorker(EquinoxBundle.java:365)
在 org.eclipse.osgi.container.Module.doStart(Module.java:598)
在 org.eclipse.osgi.container.Module.start(Module.java:462)
在 org.eclipse.osgi.container.ModuleContainer$ContainerStartLevel$1.run(ModuleContainer.java:1820)
在 org.eclipse.osgi.internal.framework.EquinoxContainerAdaptor$2$1.execute(EquinoxContainerAdaptor.java:150)
在 org.eclipse.osgi.container.ModuleContainer$ContainerStartLevel.incStartLevel(ModuleContainer.java:1813)
在 org.eclipse.osgi.container.ModuleContainer$ContainerStartLevel.incStartLevel(ModuleContainer.java:1770)
在 org.eclipse.osgi.container.ModuleContainer$ContainerStartLevel.doContainerStartLevel(ModuleContainer.java:1735)
在 org.eclipse.osgi.container.ModuleContainer$ContainerStartLevel.dispatchEvent(ModuleContainer.java:1661)
在 org.eclipse.osgi.container.ModuleContainer$ContainerStartLevel.dispatchEvent(ModuleContainer.java:1)
在 org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEvent(EventManager.java:234)
在 org.eclipse.osgi.framework.eventmgr.EventManager$EventThread.run(EventManager.java:345)
原因:java.lang.reflect.InvocationTargetException
在 sun.reflect.NativeConstructorAccessorImpl.newInstance0(本机方法)
在 sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
在 sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
在 java.lang.reflect.Constructor.newInstance(Constructor.java:423)
在 org.wso2.carbon.user.core.common.DefaultRealm.createObjectWithOptions(DefaultRealm.java:351)
... 还有 25 个
原因:org.wso2.carbon.user.core.UserStoreException:检索用户名的用户 ID 时发生数据库错误:admin
在 org.wso2.carbon.user.core.jdbc.UniqueIDJDBCUserStoreManager.doGetUserIDFromUserNameWithID(UniqueIDJDBCUserStoreManager.java:1284)
在 org.wso2.carbon.user.core.common.AbstractUserStoreManager.getUserIDFromUserName(AbstractUserStoreManager.java:11773)
在 org.wso2.carbon.user.core.common.AbstractUserStoreManager.addInitialAdminData(AbstractUserStoreManager.java:8401)
在 org.wso2.carbon.user.core.jdbc.JDBCUserStoreManager.(JDBCUserStoreManager.java:319)
在 org.wso2.carbon.user.core.jdbc.JDBCUserStoreManager.(JDBCUserStoreManager.java:258)
在 org.wso2.carbon.user.core.jdbc.UniqueIDJDBCUserStoreManager.(UniqueIDJDBCUserStoreManager.java:125)
... 30 更多
原因:com.mysql.jdbc.exceptions。jdbc4.MySQLSyntaxErrorException:'field list' 中的未知列 'UM_USER_ID'
在 sun.reflect.NativeConstructorAccessorImpl.newInstance0(本机方法)
在 sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
在 sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
在 java.lang.reflect.Constructor.newInstance(Constructor.java:423)
在 com.mysql.jdbc.Util.handleNewInstance(Util.java:425)
在 com.mysql.jdbc.Util.getInstance(Util.java:408)
在 com.mysql.jdbc.SQLError.createSQLException(SQLError.java:944)
在 com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3978)
在 com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3914)
在 com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2530)
在 com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2683)
在 com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2495)
在 com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:1903)
在 com.mysql.jdbc.PreparedStatement.executeQuery(PreparedStatement.java:2011)
在 sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法)
在 sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
在 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
在 java.lang.reflect.Method.invoke(Method.java:498)
在 org.apache.tomcat.jdbc.pool.StatementFacade$StatementProxy.invoke(StatementFacade.java:114)
在 com.sun.proxy.$Proxy51.execute 查询(未知来源)
在 org.wso2.carbon.user.core.jdbc.UniqueIDJDBCUserStoreManager.doGetUserIDFromUserNameWithID(UniqueIDJDBCUserStoreManager.java:1275)
... 35 更多
TID:[-1234] [] [2020-04-03 17:11:31,976] [] 错误 {org.wso2.carbon.user.core.internal.Activator} - 无法启动用户管理器核心包组织.wso2.carbon.user.core.UserStoreException:无法初始化领域。
在 org.wso2.carbon.user.core.common.DefaultRealmService.initializeRealm(DefaultRealmService.java:286)
在 org.wso2.carbon.user.core.common.DefaultRealmService.(DefaultRealmService.java:102)
在 org.wso2.carbon.user.core.common.DefaultRealmService.(DefaultRealmService.java:115)
在 org.wso2.carbon.user.core.internal.Activator.startDeploy(Activator.java:72)
在 org.wso2.carbon.user.core.internal.BundleCheckActivator.start(BundleCheckActivator.java:61)
在 org.eclipse.osgi.internal.framework.BundleContextImpl$3.run(BundleContextImpl.java:842)
在 org.eclipse.osgi.internal.framework.BundleContextImpl$3.run(BundleContextImpl.java:1)
在 java.security.AccessController.doPrivileged(本机方法)
在 org.eclipse.osgi.internal.framework.BundleContextImpl.startActivator(BundleContextImpl.java:834)
在 org.eclipse.osgi.internal.framework.BundleContextImpl.start(BundleContextImpl.java:791)
在 org.eclipse.osgi.internal.framework.EquinoxBundle.startWorker0(EquinoxBundle.java:1013)
在 org.eclipse.osgi.internal.framework.EquinoxBundle$EquinoxModule.startWorker(EquinoxBundle.java:365)
在 org.eclipse.osgi.container.Module.doStart(Module.java:598)
在 org.eclipse.osgi.container.Module.start(Module.java:462)
在 org.eclipse.osgi.container.ModuleContainer$ContainerStartLevel$1.run(ModuleContainer.java:1820)
在 org.eclipse.osgi.internal.framework.EquinoxContainerAdaptor$2$1.execute(EquinoxContainerAdaptor.java:150)
在 org.eclipse.osgi.container.ModuleContainer$ContainerStartLevel.incStartLevel(ModuleContainer.java:1813)
在 org.eclipse.osgi.container.ModuleContainer$ContainerStartLevel.incStartLevel(ModuleContainer.java:1770)
在 org.eclipse.osgi.container.ModuleContainer$ContainerStartLevel.doContainerStartLevel(ModuleContainer.java:1735)
在 org.eclipse.osgi.container.ModuleContainer$ContainerStartLevel.dispatchEvent(ModuleContainer.java:1661)
在 org.eclipse.osgi.container.ModuleContainer$ContainerStartLevel.dispatchEvent(ModuleContainer.java:1)
在 org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEvent(EventManager.java:234)
在 org.eclipse.osgi.framework.eventmgr.EventManager$EventThread.run(EventManager.java:345)
由以下原因引起:org.wso2.carbon.user.core.UserStoreException: nullType class java.lang.reflect.InvocationTargetException
在 org.wso2.carbon.user.core.common.DefaultRealm.initializeObjects(DefaultRealm.java:318)
在 org.wso2.carbon.user.core.common.DefaultRealm.init(DefaultRealm.java:129)
在 org.wso2.carbon.user.core.common.DefaultRealmService.initializeRealm(DefaultRealmService.java:276)
... 还有 22 个
由以下原因引起:org.wso2.carbon.user.core.UserStoreException: nullType class java.lang.reflect.InvocationTargetException
在 org.wso2.carbon.user.core.common.DefaultRealm.createObjectWithOptions(DefaultRealm.java:397)
在 org.wso2.carbon.user.core.common.DefaultRealm.initializeObjects(DefaultRealm.java:224)
... 还有 24 个
原因:java.lang.reflect.InvocationTargetException
在 sun.reflect.NativeConstructorAccessorImpl.newInstance0(本机方法)
在 sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
在 sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
在 java.lang.reflect.Constructor.newInstance(Constructor.java:423)
在 org.wso2.carbon.user.core.common.DefaultRealm.createObjectWithOptions(DefaultRealm.java:351)
... 还有 25 个
原因:org.wso2.carbon.user.core.UserStoreException:检索用户名的用户 ID 时发生数据库错误:admin
在 org.wso2.carbon.user.core.jdbc.UniqueIDJDBCUserStoreManager.doGetUserIDFromUserNameWithID(UniqueIDJDBCUserStoreManager.java:1284)
在 org.wso2.carbon.user.core.common.AbstractUserStoreManager.getUserIDFromUserName(AbstractUserStoreManager.java:11773)
在 org.wso2.carbon.user.core.common.AbstractUserStoreManager.addInitialAdminData(AbstractUserStoreManager.java:8401)
在 org.wso2.carbon.user.core.jdbc.JDBCUserStoreManager.(JDBCUserStoreManager.java:319)
在 org.wso2.carbon.user.core.jdbc.JDBCUserStoreManager.(JDBCUserStoreManager.java:258)
在 org.wso2.carbon.user.core.jdbc.UniqueIDJDBCUserStoreManager.(UniqueIDJDBCUserStoreManager.java:125)
... 30 更多
原因:com.mysql.jdbc.exceptions。jdbc4.MySQLSyntaxErrorException:'field list' 中的未知列 'UM_USER_ID'
在 sun.reflect.NativeConstructorAccessorImpl.newInstance0(本机方法)
在 sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
在 sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
在 java.lang.reflect.Constructor.newInstance(Constructor.java:423)
在 com.mysql.jdbc.Util.handleNewInstance(Util.java:425)
在 com.mysql.jdbc.Util.getInstance(Util.java:408)
在 com.mysql.jdbc.SQLError.createSQLException(SQLError.java:944)
在 com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3978)
在 com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3914)
在 com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2530)
在 com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2683)
在 com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2495)
在 com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:1903)
在 com.mysql.jdbc.PreparedStatement.executeQuery(PreparedStatement.java:2011)
在 sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法)
在 sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
在 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
在 java.lang.reflect.Method.invoke(Method.java:498)
在 org.apache.tomcat.jdbc.pool.StatementFacade$StatementProxy.invoke(StatementFacade.java:114)
在 com.sun.proxy.$Proxy51.execute 查询(未知来源)
在 org.wso2.carbon.user.core.jdbc.UniqueIDJDBCUserStoreManager.doGetUserIDFromUserNameWithID(UniqueIDJDBCUserStoreManager.java:1275)
... 35 更多
TID:[-1] [] [2020-04-03 17:11:32,384] [] INFO {org.apache.jasper.servlet.TldScanner} - 至少扫描了一个 JAR 的 TLD,但不包含 TLD。为这个记录器启用调试日志记录,以获得已扫描但未在其中找到 TLD 的 JAR 的完整列表。在扫描过程中跳过不需要的 JAR 可以缩短启动时间和 JSP 编译时间。
TID:[-1] [] [2020-04-03 17:11:32,766] [] INFO {org.wso2.carbon.identity.authenticator.x509Certificate.internal.X509CertificateServiceComponent} - X509 证书 Servlet激活成功。。
这是因为您在迁移前已为主要用户存储配置 UniqueIDJDBCUserStoreManager
。因此,它在服务器初始化期间和迁移开始之前失败。
[user_store]
type = "database_unique_id"
因此,解决方案是在迁移过程中使用JDBCUserStoreManager
。
[user_store]
type = "database"
稍后,您可以切换到 UniqueIDJDBCUserStoreManager
,因为我们会在迁移过程中进行必要的架构更新。
PS:如果您在以前的版本中没有启用SCIM,它可能无法更新用户ID [1]。因此,我们必须通过禁用主要用户存储的 SCIM 来开始迁移,因为 5.10.0 设置默认启用 SCIM,而 5.9.0 默认禁用 JDBCUserStoreManager
的 SCIM
[user_store]
type = "database"
scim_enabled=false
为添加 UM_USER_ID 列而执行的 mysql 脚本是错误的[1]。 UM_USER_ID 列添加了 DEFAULT 'NONE'
ALTER TABLE `UM_USER` ADD COLUMN `UM_USER_ID` CHAR(36) NOT NULL DEFAULT 'NONE', ADD UNIQUE(UM_USER_ID, UM_TENANT_ID);
UPDATE UM_USER SET UM_USER_ID = UUID();
无法在此处添加 UNIQUE 约束,只有一个用户(管理员用户)的迁移会成功。它已通过 commit[1]
修复
我正在尝试将我现有的 WSO2 IS 5.9 实例升级到 WSO2 IS 5.10。但是,迁移失败并显示 JDBC 错误 "Unknown column 'UM_USER_ID' in 'field list",即使我完全按照 https://is.docs.wso2.com/en/latest/setup/migration-guide 的迁移指南进行操作。
从外观上看,WSO2 似乎在 运行 升级数据库的实际迁移任务之前就崩溃了,最终 'UM_USER_ID' 列不存在。
不知道有没有人有线索?
以下是我的环境和实际错误的详细信息:
- 服务器:Ubuntu仿生 18.04.3
- OpenJDK 1.8.0.242
- MySQL 5.7.29。我已经从 sql 模式中删除了 NO_ZERO_DATE。
- mysql-连接器-java-5.1.47-bin.jar
- wso2is 迁移资源版本 1.0.82。我确实查看了此迁移资源版本中的数据库脚本并进行了一些更改以解决一些问题。
以下是日志文件中的实际异常:
TID:[-1234] [] [2020-04-03 17:11:25,228] [] INFO {org.wso2.carbon.core.internal.CarbonCoreActivator} - 启动 WSO2 Carbon ... TID:[-1] [] [2020-04-03 17:11:24,348] [] INFO {org.ops4j.pax.logging.spi.support.EventAdminConfigurationNotifier} - 发送事件管理员通知(配置成功)到 org/ops4j/pax/logging/Configuration TID:[-1234] [] [2020-04-03 17:11:25,267] [] INFO {org.wso2.carbon.core.internal.CarbonCoreActivator} - 操作系统:Linux 4.15.0-76-generic , AMD64 TID:[-1234] [] [2020-04-03 17:11:25,268] [] 信息 {org.wso2.carbon.core.internal.CarbonCoreActivator} - Java 主页:/usr/lib/jvm/java-8-openjdk-amd64/jre TID:[-1234] [] [2020-04-03 17:11:25,271] [] 信息 {org.wso2.carbon.core.internal.CarbonCoreActivator} - Java 版本:1.8.0_242 TID:[-1234] [] [2020-04-03 17:11:25,273] [] INFO {org.wso2.carbon.core.internal.CarbonCoreActivator} - Java VM:OpenJDK 64 位服务器 VM 25.242- b08,私人建筑 TID:[-1234] [] [2020-04-03 17:11:25,275] [] 信息 {org.wso2.carbon.core.internal.CarbonCoreActivator} - Carbon 主页:/opt/wso2is TID:[-1234] [] [2020-04-03 17:11:25,288] [] 信息 {org.wso2.carbon.core.internal.CarbonCoreActivator} - Java 临时目录:/opt/wso2is/tmp TID:[-1234] [] [2020-04-03 17:11:25,288] [] 信息 {org.wso2.carbon.core.internal.CarbonCoreActivator} - 用户:root,en-US,Etc/UTC TID: [-1] [] [2020-04-03 17:11:25,769] [] INFO {org.wso2.carbon.crypto.provider.internal.DefaultCryptoProviderComponent} - 'CryptoService.Secret' 属性 尚未设置。 'org.wso2.carbon.crypto.provider.SymmetricKeyInternalCryptoProvider' 不会注册为内部加密提供商。如果提供者需要注册,请设置秘密。 TID: [-1] [] [2020-04-03 17:11:26,187] [] INFO {org.wso2.carbon.event.output.adapter.kafka.internal.ds.KafkaEventAdapterServiceDS} - 成功部署Kafka输出事件适配器服务 TID:[-1] [] [2020-04-03 17:11:27,225] [] INFO {org.wso2.carbon.identity.oauth.uma.grant.internal.UMA2GrantServiceComponent} - 策略评估器注册成功:DefaultPolicyEvaluator TID:[-1] [] [2020-04-03 17:11:27,225] [] INFO {org.wso2.carbon.identity.oauth.uma.grant.internal.UMA2GrantServiceComponent} - UMA Grant 组件已成功激活。 TID:[-1234] [] [2020-04-03 17:11:27,844] [] INFO {org.wso2.carbon.ldap.server.DirectoryActivator} - 嵌入式 LDAP 已禁用。 TID:[-1] [] [2020-04-03 17:11:27,887] [] 信息 {org.wso2.carbon.mex.internal.Office365SupportMexComponent} - Office365Support MexServiceComponent 包已成功激活。 TID:[-1] [] [2020-04-03 17:11:27,903] [] INFO {org.wso2.carbon.mex2.internal.DynamicCRMCustomMexComponent} - DynamicCRMSupport MexServiceComponent 包已成功激活。 TID:[-1234] [] [2020-04-03 17:11:31,884] [] 错误 {org.wso2.carbon.user.core.common.DefaultRealm} - nullType class java.lang.reflect.InvocationTargetException org.wso2.carbon.user.core.UserStoreException: nullType class java.lang.reflect.InvocationTargetException 在 org.wso2.carbon.user.core.common.DefaultRealm.createObjectWithOptions(DefaultRealm.java:397) 在 org.wso2.carbon.user.core.common.DefaultRealm.initializeObjects(DefaultRealm.java:224) 在 org.wso2.carbon.user.core.common.DefaultRealm.init(DefaultRealm.java:129) 在 org.wso2.carbon.user.core.common.DefaultRealmService.initializeRealm(DefaultRealmService.java:276) 在 org.wso2.carbon.user.core.common.DefaultRealmService.(DefaultRealmService.java:102) 在 org.wso2.carbon.user.core.common.DefaultRealmService.(DefaultRealmService.java:115) 在 org.wso2.carbon.user.core.internal.Activator.startDeploy(Activator.java:72) 在 org.wso2.carbon.user.core.internal.BundleCheckActivator.start(BundleCheckActivator.java:61) 在 org.eclipse.osgi.internal.framework.BundleContextImpl$3.run(BundleContextImpl.java:842) 在 org.eclipse.osgi.internal.framework.BundleContextImpl$3.run(BundleContextImpl.java:1) 在 java.security.AccessController.doPrivileged(本机方法) 在 org.eclipse.osgi.internal.framework.BundleContextImpl.startActivator(BundleContextImpl.java:834) 在 org.eclipse.osgi.internal.framework.BundleContextImpl.start(BundleContextImpl.java:791) 在 org.eclipse.osgi.internal.framework.EquinoxBundle.startWorker0(EquinoxBundle.java:1013) 在 org.eclipse.osgi.internal.framework.EquinoxBundle$EquinoxModule.startWorker(EquinoxBundle.java:365) 在 org.eclipse.osgi.container.Module.doStart(Module.java:598) 在 org.eclipse.osgi.container.Module.start(Module.java:462) 在 org.eclipse.osgi.container.ModuleContainer$ContainerStartLevel$1.run(ModuleContainer.java:1820) 在 org.eclipse.osgi.internal.framework.EquinoxContainerAdaptor$2$1.execute(EquinoxContainerAdaptor.java:150) 在 org.eclipse.osgi.container.ModuleContainer$ContainerStartLevel.incStartLevel(ModuleContainer.java:1813) 在 org.eclipse.osgi.container.ModuleContainer$ContainerStartLevel.incStartLevel(ModuleContainer.java:1770) 在 org.eclipse.osgi.container.ModuleContainer$ContainerStartLevel.doContainerStartLevel(ModuleContainer.java:1735) 在 org.eclipse.osgi.container.ModuleContainer$ContainerStartLevel.dispatchEvent(ModuleContainer.java:1661) 在 org.eclipse.osgi.container.ModuleContainer$ContainerStartLevel.dispatchEvent(ModuleContainer.java:1) 在 org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEvent(EventManager.java:234) 在 org.eclipse.osgi.framework.eventmgr.EventManager$EventThread.run(EventManager.java:345) 原因:java.lang.reflect.InvocationTargetException 在 sun.reflect.NativeConstructorAccessorImpl.newInstance0(本机方法) 在 sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) 在 sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) 在 java.lang.reflect.Constructor.newInstance(Constructor.java:423) 在 org.wso2.carbon.user.core.common.DefaultRealm.createObjectWithOptions(DefaultRealm.java:351) ... 还有 25 个 原因:org.wso2.carbon.user.core.UserStoreException:检索用户名的用户 ID 时发生数据库错误:admin 在 org.wso2.carbon.user.core.jdbc.UniqueIDJDBCUserStoreManager.doGetUserIDFromUserNameWithID(UniqueIDJDBCUserStoreManager.java:1284) 在 org.wso2.carbon.user.core.common.AbstractUserStoreManager.getUserIDFromUserName(AbstractUserStoreManager.java:11773) 在 org.wso2.carbon.user.core.common.AbstractUserStoreManager.addInitialAdminData(AbstractUserStoreManager.java:8401) 在 org.wso2.carbon.user.core.jdbc.JDBCUserStoreManager.(JDBCUserStoreManager.java:319) 在 org.wso2.carbon.user.core.jdbc.JDBCUserStoreManager.(JDBCUserStoreManager.java:258) 在 org.wso2.carbon.user.core.jdbc.UniqueIDJDBCUserStoreManager.(UniqueIDJDBCUserStoreManager.java:125) ... 30 更多 原因:com.mysql.jdbc.exceptions。jdbc4.MySQLSyntaxErrorException:'field list' 中的未知列 'UM_USER_ID' 在 sun.reflect.NativeConstructorAccessorImpl.newInstance0(本机方法) 在 sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) 在 sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) 在 java.lang.reflect.Constructor.newInstance(Constructor.java:423) 在 com.mysql.jdbc.Util.handleNewInstance(Util.java:425) 在 com.mysql.jdbc.Util.getInstance(Util.java:408) 在 com.mysql.jdbc.SQLError.createSQLException(SQLError.java:944) 在 com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3978) 在 com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3914) 在 com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2530) 在 com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2683) 在 com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2495) 在 com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:1903) 在 com.mysql.jdbc.PreparedStatement.executeQuery(PreparedStatement.java:2011) 在 sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法) 在 sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 在 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 在 java.lang.reflect.Method.invoke(Method.java:498) 在 org.apache.tomcat.jdbc.pool.StatementFacade$StatementProxy.invoke(StatementFacade.java:114) 在 com.sun.proxy.$Proxy51.execute 查询(未知来源) 在 org.wso2.carbon.user.core.jdbc.UniqueIDJDBCUserStoreManager.doGetUserIDFromUserNameWithID(UniqueIDJDBCUserStoreManager.java:1275) ... 35 更多 TID:[-1234] [] [2020-04-03 17:11:31,976] [] 错误 {org.wso2.carbon.user.core.internal.Activator} - 无法启动用户管理器核心包组织.wso2.carbon.user.core.UserStoreException:无法初始化领域。 在 org.wso2.carbon.user.core.common.DefaultRealmService.initializeRealm(DefaultRealmService.java:286) 在 org.wso2.carbon.user.core.common.DefaultRealmService.(DefaultRealmService.java:102) 在 org.wso2.carbon.user.core.common.DefaultRealmService.(DefaultRealmService.java:115) 在 org.wso2.carbon.user.core.internal.Activator.startDeploy(Activator.java:72) 在 org.wso2.carbon.user.core.internal.BundleCheckActivator.start(BundleCheckActivator.java:61) 在 org.eclipse.osgi.internal.framework.BundleContextImpl$3.run(BundleContextImpl.java:842) 在 org.eclipse.osgi.internal.framework.BundleContextImpl$3.run(BundleContextImpl.java:1) 在 java.security.AccessController.doPrivileged(本机方法) 在 org.eclipse.osgi.internal.framework.BundleContextImpl.startActivator(BundleContextImpl.java:834) 在 org.eclipse.osgi.internal.framework.BundleContextImpl.start(BundleContextImpl.java:791) 在 org.eclipse.osgi.internal.framework.EquinoxBundle.startWorker0(EquinoxBundle.java:1013) 在 org.eclipse.osgi.internal.framework.EquinoxBundle$EquinoxModule.startWorker(EquinoxBundle.java:365) 在 org.eclipse.osgi.container.Module.doStart(Module.java:598) 在 org.eclipse.osgi.container.Module.start(Module.java:462) 在 org.eclipse.osgi.container.ModuleContainer$ContainerStartLevel$1.run(ModuleContainer.java:1820) 在 org.eclipse.osgi.internal.framework.EquinoxContainerAdaptor$2$1.execute(EquinoxContainerAdaptor.java:150) 在 org.eclipse.osgi.container.ModuleContainer$ContainerStartLevel.incStartLevel(ModuleContainer.java:1813) 在 org.eclipse.osgi.container.ModuleContainer$ContainerStartLevel.incStartLevel(ModuleContainer.java:1770) 在 org.eclipse.osgi.container.ModuleContainer$ContainerStartLevel.doContainerStartLevel(ModuleContainer.java:1735) 在 org.eclipse.osgi.container.ModuleContainer$ContainerStartLevel.dispatchEvent(ModuleContainer.java:1661) 在 org.eclipse.osgi.container.ModuleContainer$ContainerStartLevel.dispatchEvent(ModuleContainer.java:1) 在 org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEvent(EventManager.java:234) 在 org.eclipse.osgi.framework.eventmgr.EventManager$EventThread.run(EventManager.java:345) 由以下原因引起:org.wso2.carbon.user.core.UserStoreException: nullType class java.lang.reflect.InvocationTargetException 在 org.wso2.carbon.user.core.common.DefaultRealm.initializeObjects(DefaultRealm.java:318) 在 org.wso2.carbon.user.core.common.DefaultRealm.init(DefaultRealm.java:129) 在 org.wso2.carbon.user.core.common.DefaultRealmService.initializeRealm(DefaultRealmService.java:276) ... 还有 22 个 由以下原因引起:org.wso2.carbon.user.core.UserStoreException: nullType class java.lang.reflect.InvocationTargetException 在 org.wso2.carbon.user.core.common.DefaultRealm.createObjectWithOptions(DefaultRealm.java:397) 在 org.wso2.carbon.user.core.common.DefaultRealm.initializeObjects(DefaultRealm.java:224) ... 还有 24 个 原因:java.lang.reflect.InvocationTargetException 在 sun.reflect.NativeConstructorAccessorImpl.newInstance0(本机方法) 在 sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) 在 sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) 在 java.lang.reflect.Constructor.newInstance(Constructor.java:423) 在 org.wso2.carbon.user.core.common.DefaultRealm.createObjectWithOptions(DefaultRealm.java:351) ... 还有 25 个 原因:org.wso2.carbon.user.core.UserStoreException:检索用户名的用户 ID 时发生数据库错误:admin 在 org.wso2.carbon.user.core.jdbc.UniqueIDJDBCUserStoreManager.doGetUserIDFromUserNameWithID(UniqueIDJDBCUserStoreManager.java:1284) 在 org.wso2.carbon.user.core.common.AbstractUserStoreManager.getUserIDFromUserName(AbstractUserStoreManager.java:11773) 在 org.wso2.carbon.user.core.common.AbstractUserStoreManager.addInitialAdminData(AbstractUserStoreManager.java:8401) 在 org.wso2.carbon.user.core.jdbc.JDBCUserStoreManager.(JDBCUserStoreManager.java:319) 在 org.wso2.carbon.user.core.jdbc.JDBCUserStoreManager.(JDBCUserStoreManager.java:258) 在 org.wso2.carbon.user.core.jdbc.UniqueIDJDBCUserStoreManager.(UniqueIDJDBCUserStoreManager.java:125) ... 30 更多 原因:com.mysql.jdbc.exceptions。jdbc4.MySQLSyntaxErrorException:'field list' 中的未知列 'UM_USER_ID' 在 sun.reflect.NativeConstructorAccessorImpl.newInstance0(本机方法) 在 sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) 在 sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) 在 java.lang.reflect.Constructor.newInstance(Constructor.java:423) 在 com.mysql.jdbc.Util.handleNewInstance(Util.java:425) 在 com.mysql.jdbc.Util.getInstance(Util.java:408) 在 com.mysql.jdbc.SQLError.createSQLException(SQLError.java:944) 在 com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3978) 在 com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3914) 在 com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2530) 在 com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2683) 在 com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2495) 在 com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:1903) 在 com.mysql.jdbc.PreparedStatement.executeQuery(PreparedStatement.java:2011) 在 sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法) 在 sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 在 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 在 java.lang.reflect.Method.invoke(Method.java:498) 在 org.apache.tomcat.jdbc.pool.StatementFacade$StatementProxy.invoke(StatementFacade.java:114) 在 com.sun.proxy.$Proxy51.execute 查询(未知来源) 在 org.wso2.carbon.user.core.jdbc.UniqueIDJDBCUserStoreManager.doGetUserIDFromUserNameWithID(UniqueIDJDBCUserStoreManager.java:1275) ... 35 更多 TID:[-1] [] [2020-04-03 17:11:32,384] [] INFO {org.apache.jasper.servlet.TldScanner} - 至少扫描了一个 JAR 的 TLD,但不包含 TLD。为这个记录器启用调试日志记录,以获得已扫描但未在其中找到 TLD 的 JAR 的完整列表。在扫描过程中跳过不需要的 JAR 可以缩短启动时间和 JSP 编译时间。 TID:[-1] [] [2020-04-03 17:11:32,766] [] INFO {org.wso2.carbon.identity.authenticator.x509Certificate.internal.X509CertificateServiceComponent} - X509 证书 Servlet激活成功。。
这是因为您在迁移前已为主要用户存储配置 UniqueIDJDBCUserStoreManager
。因此,它在服务器初始化期间和迁移开始之前失败。
[user_store]
type = "database_unique_id"
因此,解决方案是在迁移过程中使用JDBCUserStoreManager
。
[user_store]
type = "database"
稍后,您可以切换到 UniqueIDJDBCUserStoreManager
,因为我们会在迁移过程中进行必要的架构更新。
PS:如果您在以前的版本中没有启用SCIM,它可能无法更新用户ID [1]。因此,我们必须通过禁用主要用户存储的 SCIM 来开始迁移,因为 5.10.0 设置默认启用 SCIM,而 5.9.0 默认禁用 JDBCUserStoreManager
[user_store]
type = "database"
scim_enabled=false
为添加 UM_USER_ID 列而执行的 mysql 脚本是错误的[1]。 UM_USER_ID 列添加了 DEFAULT 'NONE'
ALTER TABLE `UM_USER` ADD COLUMN `UM_USER_ID` CHAR(36) NOT NULL DEFAULT 'NONE', ADD UNIQUE(UM_USER_ID, UM_TENANT_ID);
UPDATE UM_USER SET UM_USER_ID = UUID();
无法在此处添加 UNIQUE 约束,只有一个用户(管理员用户)的迁移会成功。它已通过 commit[1]
修复