Skip to content

Commit 9410a70

Browse files
schema: increase size of column 'value' at table 'account_details' (#6080)
This PR increases the column value at table account_details from 255 chars to 4096, matching with the value allowed in the API command for updating the configuration of accounts. When the value length is bigger than 255, the following log is presented right after the updateConfiguration API call: 2022-03-09 17:50:24,627 ERROR [c.c.a.ApiServer] (qtp30578394-234766:ctx-cad18b45 ctx-32e954dd) (logid:0948e203) unhandled exception executing api command: [Ljava.lang.String;@117c6ba7 com.cloud.utils.exception.CloudRuntimeException: DB Exception on: com.mysql.cj.jdbc.ClientPreparedStatement: INSERT INTO account_details (account_details.account_id, account_details.name, account_details.value) VALUES (123, _binary'api.allowed.source.cidr.list', _binary'<huge binary>') at com.cloud.utils.db.GenericDaoBase.persist(GenericDaoBase.java:1450) at jdk.internal.reflect.GeneratedMethodAccessor168.invoke(Unknown Source) at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) .... .... .... Caused by: com.mysql.cj.jdbc.exceptions.MysqlDataTruncation: Data truncation: Data too long for column 'value' at row 1 at com.mysql.cj.jdbc.exceptions.SQLExceptionsMapping.translateException(SQLExceptionsMapping.java:104) at com.mysql.cj.jdbc.ClientPreparedStatement.executeInternal(ClientPreparedStatement.java:953) at com.mysql.cj.jdbc.ClientPreparedStatement.executeUpdateInternal(ClientPreparedStatement.java:1092) ... 83 more Co-authored-by: Bart Meyers <bart.meyers@cldin.eu>
1 parent 696b93f commit 9410a70

File tree

3 files changed

+5
-2
lines changed

3 files changed

+5
-2
lines changed

api/src/main/java/org/apache/cloudstack/api/command/admin/config/UpdateCfgCmd.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ public class UpdateCfgCmd extends BaseCmd {
5050
@Parameter(name = ApiConstants.NAME, type = CommandType.STRING, required = true, description = "the name of the configuration")
5151
private String cfgName;
5252

53-
@Parameter(name = ApiConstants.VALUE, type = CommandType.STRING, description = "the value of the configuration", length = 4095)
53+
@Parameter(name = ApiConstants.VALUE, type = CommandType.STRING, description = "the value of the configuration", length = 4096)
5454
private String value;
5555

5656
@Parameter(name = ApiConstants.ZONE_ID,

engine/schema/src/main/java/com/cloud/user/AccountDetailVO.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ public class AccountDetailVO implements InternalIdentity {
4242
private String name;
4343

4444
@Encrypt
45-
@Column(name = "value")
45+
@Column(name = "value", length=4096)
4646
private String value;
4747

4848
protected AccountDetailVO() {

engine/schema/src/main/resources/META-INF/db/schema-41700to41710.sql

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -126,3 +126,6 @@ CREATE VIEW `cloud`.`domain_router_view` AS
126126
`cloud`.`async_job` ON async_job.instance_id = vm_instance.id
127127
and async_job.instance_type = 'DomainRouter'
128128
and async_job.job_status = 0;
129+
130+
-- PR #6080 Change column `value` size from 255 to 4096 characters, matching the API "updateConfiguration" "value" size
131+
ALTER TABLE `cloud`.`account_details` MODIFY `value` VARCHAR(4096) NOT NULL;

0 commit comments

Comments
 (0)