Hybris - 无法增加 MySql 数据库中的列大小
Hybris - Unable to increase column size in MySql DB
我正在尝试将列大小从默认的 255 个字符增加到 1024 个字符。请注意,这是一个现有的生产项目类型 (AbstractOrderEntry) & 属性 (productDescription)。系统 init 不可能。
到目前为止,我已经尝试了这两种方法。
已修改 *-items.xml 文件。
<attribute qualifier="productDescription" type="java.lang.String">
<modifiers unique="false" optional="true" read="true" write="true"/>
<persistence type="property">
<columntype database="oracle">
<value>varchar(1024)</value>
</columntype>
<columntype database="sqlserver">
<value>nvarchar(1024)</value>
</columntype>
<columntype database="hsqldb">
<value>VARCHAR(1024)</value>
</columntype>
<columntype>
<value>varchar(1024)</value>
</columntype>
</persistence>
</attribute>
- ant clean all & 系统更新。 没用
其他方法是:
从 mySql Workbench.
执行了 alter 语句
ALTER TABLE `hybrisDB`.`quoteentries`
CHANGE COLUMN `p_productdescription` `p_productdescription` VARCHAR(1024) NULL DEFAULT NULL ;
我可以看到列大小从 SQL workbench 增加了。但是当我试图从 Hybris 中保存值时,它会抛出运行时异常。
INFO | jvm 1 | main | 2019/11/26 14:27:20.262 | com.mysql.jdbc.MysqlDataTruncation: Data truncation: Data too long for column 'p_productdescription' at row 1
INFO | jvm 1 | main | 2019/11/26 14:27:20.262 | at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4118)
INFO | jvm 1 | main | 2019/11/26 14:27:20.262 | at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4052)```
Restarted Hybris after executing direct SQL statement from DB.
Any other inputs?
您可以尝试重新声明该属性。
<attribute qualifier="productDescription" redeclare="true" type="java.lang.String">
<modifiers read="true" write="true" optional="true" unique="false" />
<persistence type="property">
<columntype>
<value>HYBRIS.LONG_STRING</value>
</columntype>
</persistence>
</attribute>
在您的问题中,您提到了两种方法。我认为您可以通过结合这两种方法来设法实现您的 objective,即
- 修改$exntesion-items.xml --> ant clean all --> ant updatesystem
- 运行 直接在数据库上修改语句并启动 Hybris
相关:sap wiki 的摘录:
参考:help.sap.com
我会创建一个具有所需大小的新属性(在 items.xml
中),重建并执行系统更新,从现有属性迁移数据(使用 ImpEx)并相应地调整应用程序代码。不会太费力,也是最安全的做法。
但是,如果您仍想使用现有属性执行此操作,请确保在执行以下任何操作之前已备份数据:
一个。更改 items.xml 如下:
<persistence type="property">
<columntype database="mysql">
<value>TEXT</value>
</columntype>
<columntype>
<value>varchar(1024)</value>
</columntype>
</persistence>
您在问题中发布的 XML 中错过了提及 database="mysql"
。
乙。执行 ant clean all updatesystem
并测试您的应用程序。
摄氏度。如果不行,执行你已经做过的SQL ALTER命令;但是这次,请确保在执行 ALTER 命令后也执行系统更新。
我正在尝试将列大小从默认的 255 个字符增加到 1024 个字符。请注意,这是一个现有的生产项目类型 (AbstractOrderEntry) & 属性 (productDescription)。系统 init 不可能。
到目前为止,我已经尝试了这两种方法。
已修改 *-items.xml 文件。
<attribute qualifier="productDescription" type="java.lang.String"> <modifiers unique="false" optional="true" read="true" write="true"/> <persistence type="property"> <columntype database="oracle"> <value>varchar(1024)</value> </columntype> <columntype database="sqlserver"> <value>nvarchar(1024)</value> </columntype> <columntype database="hsqldb"> <value>VARCHAR(1024)</value> </columntype> <columntype> <value>varchar(1024)</value> </columntype> </persistence> </attribute>
- ant clean all & 系统更新。 没用
其他方法是: 从 mySql Workbench.
执行了 alter 语句ALTER TABLE `hybrisDB`.`quoteentries`
CHANGE COLUMN `p_productdescription` `p_productdescription` VARCHAR(1024) NULL DEFAULT NULL ;
我可以看到列大小从 SQL workbench 增加了。但是当我试图从 Hybris 中保存值时,它会抛出运行时异常。
INFO | jvm 1 | main | 2019/11/26 14:27:20.262 | com.mysql.jdbc.MysqlDataTruncation: Data truncation: Data too long for column 'p_productdescription' at row 1
INFO | jvm 1 | main | 2019/11/26 14:27:20.262 | at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4118)
INFO | jvm 1 | main | 2019/11/26 14:27:20.262 | at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4052)```
Restarted Hybris after executing direct SQL statement from DB.
Any other inputs?
您可以尝试重新声明该属性。
<attribute qualifier="productDescription" redeclare="true" type="java.lang.String">
<modifiers read="true" write="true" optional="true" unique="false" />
<persistence type="property">
<columntype>
<value>HYBRIS.LONG_STRING</value>
</columntype>
</persistence>
</attribute>
在您的问题中,您提到了两种方法。我认为您可以通过结合这两种方法来设法实现您的 objective,即
- 修改$exntesion-items.xml --> ant clean all --> ant updatesystem
- 运行 直接在数据库上修改语句并启动 Hybris
相关:sap wiki 的摘录:
参考:help.sap.com
我会创建一个具有所需大小的新属性(在 items.xml
中),重建并执行系统更新,从现有属性迁移数据(使用 ImpEx)并相应地调整应用程序代码。不会太费力,也是最安全的做法。
但是,如果您仍想使用现有属性执行此操作,请确保在执行以下任何操作之前已备份数据:
一个。更改 items.xml 如下:
<persistence type="property">
<columntype database="mysql">
<value>TEXT</value>
</columntype>
<columntype>
<value>varchar(1024)</value>
</columntype>
</persistence>
您在问题中发布的 XML 中错过了提及 database="mysql"
。
乙。执行 ant clean all updatesystem
并测试您的应用程序。
摄氏度。如果不行,执行你已经做过的SQL ALTER命令;但是这次,请确保在执行 ALTER 命令后也执行系统更新。