'ORA-01461 can bind a LONG value only for insert into a LONG column' Error Due to Oracle Database Definition
When restoring an XML backup, (possibly during migrations to Oracle from other DBMS) the import can fail with an ORA-01461 SQL error:
... org.ofbiz.core.entity.GenericEntityException: while inserting: [GenericEntity:OSPropertyText][id,10460][value, ...] (SQL Exception while executing the following:INSERT INTO propertytext (ID, propertyvalue) VALUES (?, ?) (ORA-01461: can bind a LONG value only for insert into a LONG column)
com.opensymphony.module.propertyset.PropertyImplementationException: while updating: [GenericEntity:OSPropertyText][value, ...] (SQL Exception while executing the following:UPDATE propertytext SET propertyvalue=? WHERE ID=? (ORA-01461: can bind a LONG value only for insert into a LONG column ))
In fieldtype-oracle10g.xml, "very-long" is defined as a VARCHAR(4000) which often can be insufficient to store the desired information. Any entity field that is defined as such in the entitymodel.xml can potentially contain large enough data is susceptible to the problem.
There are two possible solutions:
- Modify $JIRA-Installation-Directory/atlassian-jira/
WEB-INF/classes/entitydefs/fieldtype-oracle10g.xmlto define very-long as a CLOB.
- Increase the size of the particular field in $JIRA-Installation-Directory/
WEB-INF/classes/entitydefs/entitymodel.xmlto use extremely-long which is CLOB by default.
In either case, drop and re-create the database to have your JIRA applications re-populate the schema with the new definitions (or manually move the data to another table with the new definition and swap it with the previously defined object).