更改 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 中已经存在的列的长度?的主要内容,如果未能解决你的问题,请参考以下文章

在 hybris 后台更改对象标识符

更改输入时闪亮会抛出警告:错误:无法提取不存在的列

你如何更改rails中的列数据类型?

将带有数字的列的类型从 varchar 更改为 int

Rails 中带有哈希列的数据库

每当在 PLSQL 中插入新行时,更改前一行和当前行中的列的值