Support Article
ORA-12899: value too large for column error in Pega 7.1.8
SA-22207
Summary
Text with smart quotes copied into a text property that is 64 characters long, does not fit into a database column that has a length of 64.
Error Messages
2016-04-07 09:41:55,418 [your_IP-1024-exec-19] [TABTHREAD1] [ ] [ your_ruleset:01.01.01] ( internal.access.DatabaseImpl) ERROR your_server|127.0.0.1 your_operator - Encountered problem when performing a Commit
com.pega.pegarules.pub.database.DatabaseException: Database-General Problem writing an instance to the database 12899 72000 ORA-12899: value too large for column "YOUR_SCHEMA"."YOUR_TABLE"."YOUR_COLUMN" (actual: 66, maximum: 64)
Caused by SQL Problems.
Problem #1, SQLState 72000, Error code 12899: java.sql.SQLException: ORA-12899: value too large for column "YOUR_SCHEMA"."YOUR_TABLE"."YOUR_COLUMN" (actual: 66, maximum: 64)
at com.pega.pegarules.data.internal.access.ExceptionInformation.createExceptionDueToDBFailure(ExceptionInformation.java:262)
at com.pega.pegarules.data.internal.access.Saver.insertInstance(Saver.java:1101)
at com.pega.pegarules.data.internal.access.Saver.saveInstance(Saver.java:880)
at com.pega.pegarules.data.internal.access.Saver.saveInstance(Saver.java:777)
at com.pega.pegarules.data.internal.access.Committer.performOps(Committer.java:237)
at com.pega.pegarules.data.internal.access.DatabaseImpl.attemptToProcessUpdates(DatabaseImpl.java:2653)
at com.pega.pegarules.data.internal.access.DatabaseImpl.processUpdates(DatabaseImpl.java:2308)
Caused by: java.sql.SQLException: ORA-12899: value too large for column "YOUR_SCHEMA"."YOUR_TABLE"."YOUR_COLUMN" (actual: 66, maximum: 64)
at oracle.jdbc.driver.SQLStateMapping.newSQLException(SQLStateMapping.java:70)
at oracle.jdbc.driver.DatabaseError.newSQLException(DatabaseError.java:110)
at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:171)
at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:455)
at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:413)
at oracle.jdbc.driver.T4C8Oall.receive(T4C8Oall.java:1030)
at oracle.jdbc.driver.T4CPreparedStatement.doOall8(T4CPreparedStatement.java:194)
at oracle.jdbc.driver.T4CPreparedStatement.executeForRows(T4CPreparedStatement.java:947)
at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1222)
at oracle.jdbc.driver.OraclePreparedStatement.executeInternal(OraclePreparedStatement.java:3381)
at oracle.jdbc.driver.OraclePreparedStatement.executeUpdate(OraclePreparedStatement.java:3462)
at oracle.jdbc.driver.OraclePreparedStatementWrapper.executeUpdate(OraclePreparedStatementWrapper.java:1061)
at org.apache.tomcat.dbcp.dbcp.DelegatingPreparedStatement.executeUpdate(DelegatingPreparedStatement.java:105)
at org.apache.tomcat.dbcp.dbcp.DelegatingPreparedStatement.executeUpdate(DelegatingPreparedStatement.java:105)
at com.pega.pegarules.data.internal.access.DatabasePreparedStatementImpl.executeUpdate(DatabasePreparedStatementImpl.java:476)
at com.pega.pegarules.data.internal.access.Saver.executeUpdate(Saver.java:1617)
at com.pega.pegarules.data.internal.access.Saver.insertInstance(Saver.java:1072)
... 77 more
Steps to Reproduce
- Copy a text beyond 64 characters from Microsoft Lync and paste it onto a text area property.
- Save the field to a database column with length of 64 [through Obj-Save method].
Root Cause
A third-party product issue.
The problem is that there is a difference between character count and character length. This is due to the character encoding.
The character string in the text field begins with a smart quote. The smart quote takes more than one byte to encode.
The character string length in this case is still 64, but the byte encoded length is 66.
Resolution
Perform the following local-change:
Increase the column width to accommodate the fact that some unicode characters may be present in the string.
Published April 21, 2016 - Updated October 8, 2020
Have a question? Get answers now.
Visit the Collaboration Center to ask questions, engage in discussions, share ideas, and help others.