I have a Java project connecting to an Ingres database and using the Spring Framework. This issue is related to the error codes list configuration.
According to Spring Framework API:
Class SQLErrorCodes: JavaBean for holding JDBC error codes for a particular database. Instances of this class are normally loaded through a bean factory.
Used by Spring's SQLErrorCodeSQLExceptionTranslator. The file "sql-error-codes.xml" in this package contains default SQLErrorCodes instances for various databases.
The default file is bundled in spring.jar, does not include error codes associated with Ingres RDBMS and it’s location is org/springframework/jdbc/support/sql-error-codes.xml
This document "Ingres 2006 SQL Reference Guide", in Appendix D: SQLSTATE Values and Generic Error Codes, contains the complete list of Ingres RDBMS error codes.
The only relevant sample of sql-error-codes.xml file containing Ingress error codes is this one:
Quote:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN 2.0//EN" "http://www.springframework.org/dtd/spring-beans-2.0.dtd">
<!--
- Default SQL error codes for well-known databases.
- Can be overridden by definitions in a "sql-error-codes.xml" file
- in the root of the class path.
-
- If the Database Product Name contains characters that are invalid
- to use in the id attribute (like a space) then we need to add a property
- named "databaseProductName"/"databaseProductNames" that holds this value.
- If this property is present, then it will be used instead of the id for
- looking up the error codes based on the current database.
-->
<beans>
<bean id="INGRES" class="org.springframework.jdbc.support.SQLErrorCodes">
<property name="useSqlStateForTranslation">
<value>true</value>
</property>
<property name="badSqlGrammarCodes">
<value>22000,26000,42000,42500,42501,50000,5000A</value>
</property>
<property name="invalidResultSetAccessCodes">
<value>24000</value>
</property>
<property name="dataIntegrityViolationCodes">
<value>23500,23501,23502</value>
</property>
<property name="dataAccessResourceFailureCodes">
<value>08001</value>
</property>
<property name="cannotAcquireLockCodes">
<value>5000R</value>
</property>
<property name="cannotSerializeTransactionCodes">
<value>40001</value>
</property>
<property name="deadlockLoserCodes">
<value>40P01</value>
</property>
</bean>
</beans>
Can anyone suggest a more up-to-date and complete version?