0

我有一个连接到 Ingres 数据库并使用 Spring Framework 的 Java 项目。此问题与错误代码列表配置有关。

根据Spring Framework API

SQLErrorCodes 类:用于保存特定数据库的 JDBC 错误代码的 JavaBean。此类的实例通常通过 bean 工厂加载。

由 Spring 的 SQLErrorCodeSQLExceptionTranslator 使用。此包中的文件“sql-error-codes.xml”包含各种数据库的默认 SQLErrorCodes 实例。

默认文件捆绑在 spring.jar 中,不包含与 Ingres RDBMS 关联的错误代码,它的位置是org/springframework/jdbc/support/sql-error-codes.xml

本文档“ Ingres 2006 SQL 参考指南”在附录 D:SQLSTATE 值和通用错误代码中包含 Ingres RDBMS 错误代码的完整列表。

包含 Ingress 错误代码的 sql-error-codes.xml 文件的唯一相关示例是这个

引用:

<?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>

任何人都可以建议一个更新和完整的版本吗?

4

2 回答 2

1

9.3 SQLState 代码可以从docs.ingres.com获得。与提交JIRA 票证的人交谈后,没有进一步的更新。大多数错误都使用适当的异常类型进行处理。类似于 PostgreSQL 配置文件。

于 2009-10-28T15:32:06.593 回答
0

从 Ingres 9.3 文档中为您提取 SQL 状态值和通用错误代码

Ingres 9.3 SQL 参考指南 - 附录 C:SQLSTATE 值和一般错误代码

于 2009-10-28T14:21:12.943 回答