Postgresql WSO2的默认数据库架构中的列长度限制太小

Postgresql WSO2的默认数据库架构中的列长度限制太小,postgresql,wso2,database-schema,wso2is,maxlength,Postgresql,Wso2,Database Schema,Wso2is,Maxlength,我正在使用TenantMgtAdminService将租户添加到本地WSO2IS服务器版本5.10.0和postgresql中。我注意到在设置wso2is时在服务器中引发了以下异常-admin@foodcompanyad123.com这是一个有效但长度超过31个字符的发送至tenantInfoBean.admin的电子邮件地址 Caused by: java.sql.BatchUpdateException: Batch entry 5 INSERT INTO REG_LOG (REG_PATH

我正在使用TenantMgtAdminService将租户添加到本地WSO2IS服务器版本5.10.0和postgresql中。我注意到在设置wso2is时在服务器中引发了以下异常-admin@foodcompanyad123.com这是一个有效但长度超过31个字符的发送至tenantInfoBean.admin的电子邮件地址

Caused by: java.sql.BatchUpdateException: Batch entry 5 INSERT INTO REG_LOG (REG_PATH, REG_USER_ID, REG_LOGGED_TIME, REG_ACTION, REG_ACTION_DATA, REG_TENANT_ID) VALUES ('/_system/governance/permission', 'wso2is-admin@foodcompanyad123.com', '2020-06-17 13:54:15.776+03', 0, NULL, 9) was aborted: ERROR: value too long for type character varying(31) Call getNextException to see other errors in the batch.
 at org.postgresql.jdbc.BatchResultHandler.handleError(BatchResultHandler.java:154)
 at org.postgresql.core.ResultHandlerDelegate.handleError(ResultHandlerDelegate.java:50)
 at org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:2269)
 at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:511)
 at org.postgresql.jdbc.PgStatement.internalExecuteBatch(PgStatement.java:851)
 at org.postgresql.jdbc.PgStatement.executeBatch(PgStatement.java:874)
 at org.postgresql.jdbc.PgPreparedStatement.executeBatch(PgPreparedStatement.java:1569)
 at sun.reflect.GeneratedMethodAccessor176.invoke(Unknown Source)
 at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
 at java.lang.reflect.Method.invoke(Method.java:498)
 at org.apache.tomcat.jdbc.pool.StatementFacade$StatementProxy.invoke(StatementFacade.java:114)
 at com.sun.proxy.$Proxy53.executeBatch(Unknown Source)
 at org.wso2.carbon.registry.core.jdbc.dao.JDBCLogsDAO.addLogRecords(JDBCLogsDAO.java:159)
 ... 3 more
Caused by: org.postgresql.util.PSQLException: ERROR: value too long for type character varying(31)
 at org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryExecutorImpl.java:2533)
 at org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:2268)
 ... 13 more
如果管理员用户名加上“@”符号加上租户域(如WSO2I)的长度为-admin@foodcompanyad123.com@foodcompanyad123.com大于45个字符,如以下堆栈跟踪所示

TID: [-1234] [TenantMgtAdminService] [2020-06-17 14:26:25,843] [9a69c7e4-661f-4713-b500-9f7e850f5c0d] ERROR {org.wso2.carbon.identity.workflow.impl.listener.WorkflowImplTenantMgtListener} - Error occurred while adding default bps profile for tenant: gondor-pizza-4.fts org.wso2.carbon.identity.workflow.impl.WorkflowImplException: Error when executing the sql query INSERT INTO WF_BPS_PROFILE(PROFILE_NAME, HOST_URL_MANAGER, HOST_URL_WORKER, USERNAME, PASSWORD, TENANT_ID) VALUES (?, ?, ?, ?, ?, ?)
 at org.wso2.carbon.identity.workflow.impl.dao.BPSProfileDAO.addProfile(BPSProfileDAO.java:75)
 at org.wso2.carbon.identity.workflow.impl.WorkflowImplServiceImpl.addBPSProfile(WorkflowImplServiceImpl.java:89)
...
...
...
Caused by: org.postgresql.util.PSQLException: ERROR: value too long for type character varying(45)
 at org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryExecutorImpl.java:2533)
与上面的第二个跟踪相关,我发现这个问题仍然存在


解决这些问题的最佳方式是什么?我是否必须修改模式以增加限制?还有其他方法吗?

您应该能够在没有功能问题的情况下增加有问题的列长度。但是,将列长度增加到给定的默认值之外会导致性能轻微下降,因为列上的索引大小也会增加

然而,在有能力的基础设施上,这种退化应该不太明显


最好在增加列长度后测试您的关键功能,以查找任何有问题的列。

谢谢您的回复。在我们的设置中,我们使用电子邮件作为用户名。除了每次在有限长度的列中插入长值时都会发现错误之外,还有什么方法可以预先知道我们需要更改哪些列?