当我修改服务构建器生成的tables.sql(VARCHAR(4000))中的列时,重新部署portlet不会导致Liferay更改db表。如何确保列扩展?
我必须对另一个承包商开发的Liferay 6.1.20 EE GA2项目进行一些更改。该项目使用maven作为构建工具。
在向service.xml
添加一些列并运行mvn liferay:build-service
之后,我注意到portlet-model-hints.xml
已被覆盖(请参阅https://issues.liferay.com/browse/MAVEN-37)并重置为默认列宽。
表中有很多数据(它在生产模式下运行),所以我不能简单地删除并重新创建表。
因此,我手动修改了生成的tables.sql
中的列宽,并重新部署了portlet。新列现在存在于db表中,但列宽未被更改。
Liferay是否会改变列宽或是否必须手动对数据库发出一些sql语句?
(我们正在使用oracle 10g数据库)
答案 0 :(得分:0)
如果要更改列withs,则需要在portlet-model-hints.xml中写入。 例如,要将字段增加到255,您将执行以下操作:(重要的是在更改后运行构建服务。)
答案 1 :(得分:0)
ServiceBuilder本身不会ALTER TABLE
- 您必须自己编写一个UpgradeProcess。检查this blog post或基础文档。
简而言之:始终可以自动完成的更新属于" DROP TABLE - CREATE TABLE",但正如您所说,这通常是不可取的。任何更奇特的方式都需要手动完成,这正是这种机制的用途。