Изменить длину уже существующего столбца в Hybris? - PullRequest
1 голос
/ 03 марта 2020

Я пытаюсь изменить длину атрибута Description в AbstractRuleEngineRule (отображается в виджете правила продвижения в backoffice)

Поскольку столбец уже сохранен в базе данных, и мы не можем инициализировать систему, я нашел обходной путь для этого изменив таблицу во время обновления системы.


@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 Ответ

2 голосов
/ 03 марта 2020

AbstractRuleEngineRule - это тип, а не имя таблицы. Вам нужно посмотреть на развертывание, чтобы увидеть, что такое имя таблицы. Например, <deployment table="EngineRules" ....

...