更改 Hybris 中已经存在的列的长度?
Posted
技术标签:
【中文标题】更改 Hybris 中已经存在的列的长度?【英文标题】:Change length of already persisting column in Hybris? 【发布时间】:2020-03-03 14:08:30 【问题描述】:我正在尝试更改 AbstractRuleEngineRule 中描述属性的长度(在后台的促销规则小部件中可见)
由于该列已保存在数据库中,我们无法初始化系统,因此我找到了一种解决方法,方法是在更新系统期间更改表。
@SystemSetup(extension = "ezibuypromotionengine")
public class CoreSystemSetup extends AbstractSystemSetup
private static final Logger LOG = Logger.getLogger(CoreSystemSetup.class);
/**
* This method will be called during the system update.
*/
@SystemSetup(type = Type.PROJECT, process = Process.UPDATE)
public void updateColumnsSize(final SystemSetupContext context)
Connection conn = null;
PreparedStatement pstmt = null;
try
conn = Registry.getCurrentTenant().getDataSource().getConnection();
pstmt = conn.prepareStatement("alter table AbstractRuleEngineRule alter column description varchar(500)");
pstmt.execute();
catch (final SQLException e)
LOG.error("Unable to alter database column - " + e);
finally
Utilities.tryToCloseJDBC(conn, pstmt, null);
但我收到一个错误
ERROR [hybrisHTTP26] [CoreSystemSetup] Unable to alter database column - java.sql.SQLSyntaxErrorException: user lacks privilege or object not found: PUBLIC.ABSTRACTRULEENGINERULE
【问题讨论】:
【参考方案1】:AbstractRuleEngineRule 是类型,而不是表名。您需要查看部署以查看表名是什么。例如。 <deployment table="EngineRules" ....
【讨论】:
我进行了更改,但仍然收到ERROR [hybrisHTTP11] [CoreSystemSetup] Unable to alter database column - java.sql.SQLSyntaxErrorException: user lacks privilege or object not found: DESCRIPTION
但我们确实有 AbstractRuleEngineRule 的
我认为您应该尝试使用“P_DESCRIPTION”
如果您在 HAC 中使用 FlexibleSearch Console,您可以查看哪些表中存在哪些列。从 FlexibleSearch 语法开始,例如select * from AbstractRuleEngineRule ...输出将显示列名,对于简单查询,您将在第二个选项卡中看到实际 SQL 的转换以上是关于更改 Hybris 中已经存在的列的长度?的主要内容,如果未能解决你的问题,请参考以下文章