在数据库中更改列名称的影响

2020-09-15 21:04发布

点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)嗨,大家好,我遇到了一种奇怪的问...

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

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


嗨,大家好,我遇到了一种奇怪的问题,它与实际数据库中的列名有关。 当前在生产环境中,媒体表具有属性" realFileName"而不是" p_realFIleName"。 当HYBRIS在属性中添加前缀(p_)时,我认为这是错误的,但是应用程序可以正常工作。 此问题可能与从4.5升级到5.6有关。 有一个OOTB cron作业(Lucene重建索引作业),用于重建lucene索引会引发错误,因为它试图从不存在的medias表中从列名" p_realFileName"中获取数据。

可能的解决方案是直接在DB中将列名重命名(realFileName为p_realFileName)。 但是我的问题是,此更改可能会对应用程序级别产生什么影响。 另外,由于列名当前为'realFIleName'(不带前缀p_),并且应用程序运行正常,但cron作业中的问题为何对应用程序没有影响。 HYBRIS如何从数据库的实际列中获取数据。

注意:如果执行初始化,则数据库中的列名称将变为" p_realFileName"。

谢谢!

2条回答
Bunny_CDM
2020-09-15 21:43

您可以在类型系统中检查是否为此属性配置了什么列名。 转到hmc System -> Type ,然后在选项卡 Properties 中打开 AbstractMedia 类型,您将找到属性 realfilename 。 打开此属性,您将找到一个属性 Database Column ,该属性定义了使用的列名。

您还可以执行以下查询从{media} 中选择{realFileName},这可能会导致sql查询,例如 SELECT item_t0.p_realfilename FROM medias item_t0 WHERE(item_t0.TypePkString IN( ?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ),其中 p_realfilename 应该与中的定义匹配 数据库列

因此,当您重命名列时,需要调整类型系统。

我的建议是不要弄乱类型系统。 但是尝试通过修复发出的查询来修复作业。 因此,如果任何 Indexer查询使用 select p_realfilname ... 而不是 select {realfilename} ,则可能要检查所有搜索配置。

一周热门 更多>