pk XXXXXXXXXXXXX不再存在。

2020-08-27 04:11发布

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


你好!

产品目录同步出现问题。 启动后大约立即失败,并显示以下错误:

de.hybris.platform.servicelayer.internal.jalo.ServicelayerJob] [](000095HI)[EJBTools] pk 8796392783954不再存在。 de.hybris.platform.servicelayer.internal.jalo.ServicelayerJob] [](000095HI)[EJBTools] de.hybris的java.lang.Exception de.hybris.platform.util.EJBTools.instantiatePK(EJBTools.java:143) java.lang.reflect上的.platform.persistence.type.AttributeDescriptorEJB.getEnclosingType(AttributeDescriptorEJB.java:397)在sun.reflect.GeneratedMethodAccessor64.invoke(未知源)在sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) .hybris.platform.util.Utilities.callMethod(Utilities.java:1069)的.Method.invoke(Method.java:498)在de.hybris.platform.persistence.framework.RemoteInvocationHandler.performOutsideTx(RemoteInvocationHandler.java:186) ),位于com.sun.proxy的de.hybris.platform.persistence.framework.RemoteInvocationHandler.invoke(RemoteInvocationHandler.java:107)的de.hybris.platform.persistence.framework.RemoteInvocationHandler.performOther(RemoteInvocationHandler.java:164)处。 位于de.hybris.platform.persistence.t的$ Proxy32.getEnclosingType(未知来源) ype.AttributeDescriptorEJBImpl.getEnclosingType(AttributeDescriptorEJBImpl.java:136)位于de.hybris.platform.jalo.type.AttributeDescriptor $ 5.compute(AttributeDescriptor.java:807)位于de.hybris.platform.jalo.Item $ CachedGetter.get(Item .java:694),位于de.hybris.platform.jalo.type.AttributeDescriptor.getEnclosingType(AttributeDescriptor.java:809),位于de.hybris.platform.catalog.jalo.SyncItemJob $ SyncItemCopyContext。(SyncItemJob.java:439 )位于de.hybris.platform.catalog.jalo.SyncItemJob.performCronJob(SyncItemJob.java:1549)位于de.hybris.platform.catalog.jalo.SyncItemJob.performCronJob(SyncItemJob.java:1549)位于de.hybris.platform.catalog.jalo.SyncItemJob.createCopyContext(SyncItemJob.java:732)处。 cronjob.jalo.Job.execute(Job.java:1274)位于de.hybris.platform.cronjob.jalo.Job.performImpl(Job.java:794)位于de.hybris.platform.cronjob.jalo.Job.performImpl( Job.java:713)位于de.hybris.platform.cronjob.jalo.Job.perform(Job.java:629)

不清楚从哪里获取此PK 8796392783954。 为了确定是否确实不存在,我进行了灵活的搜索查询:

从{item中选择{ctype.code},{itm.pk},因为它在{itm.itemtype} = {ctype.pk}}上以ctype的形式加入ComposedType,其中{itm.pk} = 8796392783954 

如果有一个项目具有这样的pk,则此查询应返回一个标识此项目的单个结果,但结果为空。

您能否说明Hybris可以从何处获取与任何物品都不对应的pk,以及如何将其删除?

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


你好!

产品目录同步出现问题。 启动后大约立即失败,并显示以下错误:

de.hybris.platform.servicelayer.internal.jalo.ServicelayerJob] [](000095HI)[EJBTools] pk 8796392783954不再存在。 de.hybris.platform.servicelayer.internal.jalo.ServicelayerJob] [](000095HI)[EJBTools] de.hybris的java.lang.Exception de.hybris.platform.util.EJBTools.instantiatePK(EJBTools.java:143) java.lang.reflect上的.platform.persistence.type.AttributeDescriptorEJB.getEnclosingType(AttributeDescriptorEJB.java:397)在sun.reflect.GeneratedMethodAccessor64.invoke(未知源)在sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) .hybris.platform.util.Utilities.callMethod(Utilities.java:1069)的.Method.invoke(Method.java:498)在de.hybris.platform.persistence.framework.RemoteInvocationHandler.performOutsideTx(RemoteInvocationHandler.java:186) ),位于com.sun.proxy的de.hybris.platform.persistence.framework.RemoteInvocationHandler.invoke(RemoteInvocationHandler.java:107)的de.hybris.platform.persistence.framework.RemoteInvocationHandler.performOther(RemoteInvocationHandler.java:164)处。 位于de.hybris.platform.persistence.t的$ Proxy32.getEnclosingType(未知来源) ype.AttributeDescriptorEJBImpl.getEnclosingType(AttributeDescriptorEJBImpl.java:136)位于de.hybris.platform.jalo.type.AttributeDescriptor $ 5.compute(AttributeDescriptor.java:807)位于de.hybris.platform.jalo.Item $ CachedGetter.get(Item .java:694),位于de.hybris.platform.jalo.type.AttributeDescriptor.getEnclosingType(AttributeDescriptor.java:809),位于de.hybris.platform.catalog.jalo.SyncItemJob $ SyncItemCopyContext。(SyncItemJob.java:439 )位于de.hybris.platform.catalog.jalo.SyncItemJob.performCronJob(SyncItemJob.java:1549)位于de.hybris.platform.catalog.jalo.SyncItemJob.performCronJob(SyncItemJob.java:1549)位于de.hybris.platform.catalog.jalo.SyncItemJob.createCopyContext(SyncItemJob.java:732)处。 cronjob.jalo.Job.execute(Job.java:1274)位于de.hybris.platform.cronjob.jalo.Job.performImpl(Job.java:794)位于de.hybris.platform.cronjob.jalo.Job.performImpl( Job.java:713)位于de.hybris.platform.cronjob.jalo.Job.perform(Job.java:629)

不清楚从哪里获取此PK 8796392783954。 为了确定是否确实不存在,我进行了灵活的搜索查询:

从{item中选择{ctype.code},{itm.pk},因为它在{itm.itemtype} = {ctype.pk}}上以ctype的形式加入ComposedType,其中{itm.pk} = 8796392783954 

如果有一个项目具有这样的pk,则此查询应返回一个标识此项目的单个结果,但结果为空。

您能否说明Hybris可以从何处获取与任何物品都不对应的pk,以及如何将其删除?

付费偷看设置
发送
3条回答
bbpeas
1楼-- · 2020-08-27 04:36

嗨,德米特里!

实际上," pk不存在"是在大多数情况下由Backoffice/hmc中的手动操作引起的。 例如,手动创建,同步,然后以不安全的方式删除的项(或者在事务/验证/传统模式下的导入期间出错/等),或者它可能是由回滚引起的。 有太多原因可能会导致...我认为此pk可能在db中的关系条目中。 我建议检查下一个选项:

1。 通过此groovy脚本检查有关pk的信息。 您也可以通过Pk分析仪在hac中进行检查。

 def INPUT_PK = 8796392783954
   
 def pk = de.hybris.platform.core.PK.parse(String.valueOf(INPUT_PK))
 println"群集ID:$ {pk.clusterID}"
 def部署= de.hybris.platform.core.Registry.currentTenant.persistenceManager.getItemDeployment(pk.typeCode)
 println" TypeCode:$ {deployment.typeCode}($ {deployment.name})"
 如果(pk.counterBased){
   " println"此PK基于计数器,并且计数器为$ {pk.counter}"
 }其他{
   " println"此PK是基于时间的,时间是$ {pk.creationTime}(子毫秒计数器$ {pk.milliCnt})"
 }
 
2。 尝试清理
hac>维护>清理

3。 检查审核文件。 如果审计中没有任何地方留下这样的pk,那么只有备份才能提供帮助。

4。 手动检查db中的pk关系(极端选项)。


希望这会有所帮助,

伊戈尔

SAP小黑
2楼-- · 2020-08-27 04:39

你好伊戈尔!

非常感谢您的指示!

常规返回该pk与 de.hybris.platform.persistence.type.ComposedType 有关,但是它没有找到任何与modelService.get相关的实例,也没有在问题中进行灵活搜索。

我希望审核文件会有所帮助。 您能澄清有关审核文件的信息吗?

哎,真难
3楼-- · 2020-08-27 04:56

您好,德米特里(Dmitry)!

请在此处查看审核信息:
https://help.sap.com/viewer/d0224eca81e249cb82f82cd en-US/3e2b8491449d43b391eb1ce9c73cbb7f.html

希望这会有所帮助,

伊戈尔

一周热门 更多>