2016-12-01 45 views
1

我KeyCloak当越来越NPE与H2 DB(默认)的作品,并在其中
我想导出数据,这样我可以迁移KeyCloak到mysqlKeyCloak 2.3出口

KeyCloak我使用的是2.3有一些数据版本 我试图导出数据时不断收到NPE。

命令我使用导出为:

须藤./standalone.sh -Dkeycloak.migration.action =出口-Dkeycloak.migration.provider = singleFile -Dkeycloak.migration.file =的/ tmp/export.json

堆栈跟踪:

Caused by: java.lang.NullPointerException 
at org.keycloak.exportimport.util.ExportUtils.exportRealm(ExportUtils.java:227) 
at org.keycloak.exportimport.singlefile.SingleFileExportProvider$1.runExportImportTask(SingleFileExportProvider.java:65) 
at org.keycloak.exportimport.util.ExportImportSessionTask.run(ExportImportSessionTask.java:35) 
at org.keycloak.models.utils.KeycloakModelUtils.runJobInTransaction(KeycloakModelUtils.java:235) 
at org.keycloak.exportimport.singlefile.SingleFileExportProvider.exportModel(SingleFileExportProvider.java:58) 
at org.keycloak.exportimport.ExportImportManager.runExport(ExportImportManager.java:102) 
at org.keycloak.services.resources.KeycloakApplication.<init>(KeycloakApplication.java:148) 
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) 
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) 
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) 
at java.lang.reflect.Constructor.newInstance(Constructor.java:423) 
at org.jboss.resteasy.core.ConstructorInjectorImpl.construct(ConstructorInjectorImpl.java:150) 
... 19 more 
+0

也许你的H2数据库已损坏。您是否定义了多个领域?如果是这样,你尝试导出只有你的用户的单一境界-Dkeycloak.migration.realmName =

+0

我有两个领域的主人和一个用户。我得到与-Dkeycloak.migration.realmName = 相同的错误。我不认为h2已损坏,我可以在管理控制台中看到数据 – user2952779

回答

0

通过阅读H2和生成表+数据创建SQL脚本解决了这个

0

我不知道这是否是同样的问题,但我也尝试执行默认导出时收到空指针错误。

我的问题是由于没有在认证流程中设置执行的别名。 https://issues.jboss.org/browse/KEYCLOAK-2494

基本上保持出口的Json文件的排序,让他们多版本keycloak是需要一个别名设置,以便它可以永远做一致的排序。

https://github.com/keycloak/keycloak/commit/c81d0c0898d7b44c0d053ce6666acdad4967bffc

对我来说,伦敦定盘设置别名字段中配置为通过管理控制台执行,烦人,如果你做任何配置之前,它不会让你更新的别名。您必须在管理控制台中删除执行并重新创建它。