KeyCloak 2.3 导出时获取 NPE
KeyCloak 2.3 getting NPE when exporting
我的 KeyCloak 使用 h2 db(默认)并且里面有一些数据
我想导出数据,这样我就可以将 KeyCloak 迁移到 mysql
我用的KeyCloak是2.3版本
我在尝试导出数据时一直收到 NPE。
我用于导出的命令是:
sudo ./standalone.sh -Dkeycloak.migration.action=export -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.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
通过阅读 H2 并创建 sql 用于生成表 + 数据的脚本
解决了这个问题
我不确定这是否是同一个问题,但我在尝试执行默认导出时也收到空指针错误。
我遇到的问题是因为没有在身份验证流程中为执行设置别名。
https://issues.jboss.org/browse/KEYCLOAK-2494
基本上,为了保持导出的 Json 文件的顺序并保持它们的版本化,keycloak 需要设置一个别名,以便它始终可以进行一致的排序。
https://github.com/keycloak/keycloak/commit/c81d0c0898d7b44c0d053ce6666acdad4967bffc
我的解决方法是在配置中设置一个别名字段以通过管理控制台执行,如果你在它不允许你更新别名之前完成任何配置,这很烦人。您只需在管理控制台中删除执行并重新创建即可。
我的 KeyCloak 使用 h2 db(默认)并且里面有一些数据
我想导出数据,这样我就可以将 KeyCloak 迁移到 mysql
我用的KeyCloak是2.3版本 我在尝试导出数据时一直收到 NPE。
我用于导出的命令是:
sudo ./standalone.sh -Dkeycloak.migration.action=export -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.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
通过阅读 H2 并创建 sql 用于生成表 + 数据的脚本
解决了这个问题我不确定这是否是同一个问题,但我在尝试执行默认导出时也收到空指针错误。
我遇到的问题是因为没有在身份验证流程中为执行设置别名。 https://issues.jboss.org/browse/KEYCLOAK-2494
基本上,为了保持导出的 Json 文件的顺序并保持它们的版本化,keycloak 需要设置一个别名,以便它始终可以进行一致的排序。
https://github.com/keycloak/keycloak/commit/c81d0c0898d7b44c0d053ce6666acdad4967bffc
我的解决方法是在配置中设置一个别名字段以通过管理控制台执行,如果你在它不允许你更新别名之前完成任何配置,这很烦人。您只需在管理控制台中删除执行并重新创建即可。