2016-12-01 24 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

對我來說,倫敦定盤設置別名字段中配置爲通過管理控制檯執行,煩人,如果你做任何配置之前,它不會讓你更新的別名。您必須在管理控制檯中刪除執行並重新創建它。