异常:尽管无法在items.xml中删除属性,但"无法读取属性"

2020-08-16 07:51发布

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

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


您好,我们有自己的属性 CronJob#exportLevel 。 由于不再需要它,我们将其从items.xml中删除

问题是,现在运行Cronjob时,我们在其中一个系统上获得了Exception(请参阅附件 exception.txt 查看完整的堆栈跟踪):

 信息|  jvm 1 | 主|  2019/07/25 14:48:53.892 | 错误[TaskExecutor-master-8066-Task [8800222020534]] [PropertyJDBC]错误,读取项目'8800287359477'/'8800287359477'的属性字段'exportLevel'/'p_exportlevel'(信息为[exportLevel,p_exportlevel,class de.hybris.platform  .util.ItemPropertyValue])
  信息|  jvm 1 | 主|  2019/07/25 14:48:53.892 | 堆栈:
  信息|  jvm 1 | 主|  2019/07/25 14:48:53.892 | 错误[TaskExecutor-master-8066-任务[8800222020534]] [DefaultTaskService]无法执行任务8800222020534(hjmpTS:0)。
  信息|  jvm 1 | 主|  2019/07/25 14:48:53.892 |  de.hybris.platform.servicelayer.exceptions.SystemException:de.hybris.platform.persistence.hjmp.HJMPException:java.sql.SQLException:无效的列名
  信息|  jvm 1 | 主|  2019/07/25 14:48:53.892 |


  

因此,我们认为我们应该删除相应的AttributeDescriptor以便解决该问题。 但是

  SELECT * FROM属性描述符在更低位置(QualifierInternal)='exportlevel'

  

返回空结果。 因此该属性不存在,但仍在某些hybris表中定义...我们还可以检查哪些表来查找属性声明?

在例外情况下,将调用de.hybris.platform.cache.AbstractCacheUnit.get(AbstractCacheUnit.java:180)。 因此,也许我们应该清空一些hybris缓存来解决此问题? 但是重置HAC>监视>缓存无济于事。 您是否知道我们还可以检查些什么以了解问题?

提前谢谢!

斯文

12968-exception.txt (17.9 kB)

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

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


您好,我们有自己的属性 CronJob#exportLevel 。 由于不再需要它,我们将其从items.xml中删除

问题是,现在运行Cronjob时,我们在其中一个系统上获得了Exception(请参阅附件 exception.txt 查看完整的堆栈跟踪):

 信息|  jvm 1 | 主|  2019/07/25 14:48:53.892 | 错误[TaskExecutor-master-8066-Task [8800222020534]] [PropertyJDBC]错误,读取项目'8800287359477'/'8800287359477'的属性字段'exportLevel'/'p_exportlevel'(信息为[exportLevel,p_exportlevel,class de.hybris.platform  .util.ItemPropertyValue])
  信息|  jvm 1 | 主|  2019/07/25 14:48:53.892 | 堆栈:
  信息|  jvm 1 | 主|  2019/07/25 14:48:53.892 | 错误[TaskExecutor-master-8066-任务[8800222020534]] [DefaultTaskService]无法执行任务8800222020534(hjmpTS:0)。
  信息|  jvm 1 | 主|  2019/07/25 14:48:53.892 |  de.hybris.platform.servicelayer.exceptions.SystemException:de.hybris.platform.persistence.hjmp.HJMPException:java.sql.SQLException:无效的列名
  信息|  jvm 1 | 主|  2019/07/25 14:48:53.892 |


  

因此,我们认为我们应该删除相应的AttributeDescriptor以便解决该问题。 但是

  SELECT * FROM属性描述符在更低位置(QualifierInternal)='exportlevel'

  

返回空结果。 因此该属性不存在,但仍在某些hybris表中定义...我们还可以检查哪些表来查找属性声明?

在例外情况下,将调用de.hybris.platform.cache.AbstractCacheUnit.get(AbstractCacheUnit.java:180)。 因此,也许我们应该清空一些hybris缓存来解决此问题? 但是重置HAC>监视>缓存无济于事。 您是否知道我们还可以检查些什么以了解问题?

提前谢谢!

斯文

12968-exception.txt (17.9 kB)
付费偷看设置
发送
8条回答
闻人可可
1楼 · 2020-08-16 08:24.采纳回答

以下查询中存在错误(可能是错字):

  SELECT * FROM属性描述符在更低位置(QualifierInternal)='exportlevel'
  

应该是:

  SELECT * FROM属性描述符在更低位置(QualifierInternal)='p_exportlevel'
  

此外,从数据库中删除相应的记录后,请确保执行 ant clean all updatesystem

警告:在执行穿孔操作之前,请先备份数据库。

能不能别闹
2楼-- · 2020-08-16 08:21

当我们从items.xml中删除属性时,该属性仍保留在 db,因此您可能需要删除它。 您可以尝试从hac中删除孤立的属性。如果仍然存在,请通过sql命令等从表中删除该属性。

您还可以尝试从hmc/backoffice移除属性。

哎,真难
3楼-- · 2020-08-16 08:02

您好,您知道该属性是在哪种类型下添加的。 如果您从items.xml中获取了代码,那么将很容易删除,请提供该代码,以便轻松确认并提供删除步骤。

微wx笑
4楼-- · 2020-08-16 08:04

感谢您的回答,但还不完整。 我们在哪里可以删除后台的属性? 在"系统>类型>类型" CronJob">属性"下看不到它。

如果要使用SQL从数据库中删除属性,应在表中搜索哪个? 在表" attributedescriptors"中未声明它。

您读过异常吗?

先谢谢了。

compass1988
5楼-- · 2020-08-16 07:58

请通过以下链接获取更多有关删除列的正确方法的信息:

* /img/questions/12748493/view.html*

您提到您具有CronJob#exportLevel属性,因此您知道要在哪个表(LFullExportCronJob)中搜索。 或那是不正确的信息。 是表需要搜索属性并将其删除。 基本上,问题是您的属性已从items.xml中删除,但仍保留在数据库中。

注意: 我希望从items.xml中删除属性后,您可以完成空白系统更新。

尝试下面的代码进行删除:

删除AttributeDescriptor;限定符[unique = true]; enclosingType(code)[unique = true]

; exportLevel; LFullExportCronJob

清除所有孤立类型

  1.打开hybris管理控制台。
    2.转到维护选项卡,然后选择清除选项。
    3.显示"类型系统"选项卡中的"清理"页面。
    4.确保两个复选框均已选中,然后单击"清除所有孤立类型"按钮。
    5,孤立类型被删除

  

请告诉我这是否对您有帮助,或者您需要更多详细信息或方法来帮助您。

绿领巾童鞋
6楼-- · 2020-08-16 08:16

您提到您具有CronJob#exportLevel属性,因此您知道要在哪些表中搜索。 或那是不正确的信息。 是表需要搜索属性并将其删除。 基本上,问题是您的属性已从items.xml中删除,但仍保留在数据库中。

注意: 我希望从items.xml中删除属性后,您已经完成了空白的系统更新。

Cikesha
7楼-- · 2020-08-16 08:12

您可以使用SQL查询将其删除,以从表LFullExportCronJob中删除属性exportLevel。

您可以点击该链接,其中有很多示例可以删除列,并且提供了很好的链接。

/img/questions/12748493/view.html

一周热门 更多>