Spring — поддержка СУБД Ingres в файле отображения кода ошибки sql-error-codes.xml

У меня есть проект Java, подключающийся к базе данных Ingres и использующий Spring Framework. Эта проблема связана с конфигурацией списка кодов ошибок.

Согласно Spring Framework API< /а>:

Класс SQLErrorCodes: JavaBean для хранения кодов ошибок JDBC для конкретной базы данных. Экземпляры этого класса обычно загружаются через фабрику компонентов.

Используется Spring SQLErrorCodeSQLExceptionTranslator. Файл "sql-error-codes.xml" в этом пакете содержит экземпляры SQLErrorCodes по умолчанию для различных баз данных.

Файл по умолчанию упакован в spring.jar, не содержит кодов ошибок, связанных с СУБД Ingres, и его расположение org/springframework/jdbc/support/sql-error-codes.xml.

Этот документ "Справочное руководство по Ingres 2006 SQL" в Приложении D: Значения SQLSTATE и общие Коды ошибок, содержит полный список кодов ошибок СУБД Ingres.

Единственным соответствующим образцом файла sql-error-codes.xml, содержащим коды ошибок Ingress, является этот one:

Цитировать:

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

Может кто подскажет более актуальную и полную версию?


person Adrian    schedule 28.10.2009    source источник
comment
Итак, вам нужно более полное сопоставление кодов ошибок или вы хотите знать, как использовать приведенное выше сопоставление?   -  person skaffman    schedule 28.10.2009
comment
Для начала мне нужно более полное сопоставление кода, если возможно, из авторитетного источника. Далее мне нужно будет объединить его с уже присутствующим в spring.jar, но это уже другой вопрос.   -  person Adrian    schedule 28.10.2009


Ответы (2)


Коды SQLState версии 9.3 можно получить на странице docs.ingres.com< /а>. После разговора с человеком, отправившим тикет JIRA, дальнейших обновлений не поступало. Большинство ошибок обрабатываются с помощью соответствующего типа исключения. Аналогично профилю PostgreSQL.

person grantc    schedule 28.10.2009

Для вас извлечены из документации Ingres 9.3 значения состояния SQL и общие коды ошибок.

Справочное руководство по Ingres 9.3 SQL — Приложение C: Значения SQLSTATE и общие коды ошибок

person jitter    schedule 28.10.2009
comment
Я уже упоминал Приложение, содержащее коды ошибок, но мне нужен файл sql-error-codes.xml, как того требует Spring Framework. - person Adrian; 28.10.2009
comment
Да, но вы ссылаетесь на Ingres 2006 вместо 9.3 - person jitter; 28.10.2009
comment
Коды ошибок во многом одинаковы между выпусками, особенно для состояния SQL, которое является более общим, чем собственные коды ошибок Ingres. - person grantc; 05.11.2009
comment
Правильно и, кстати, я не думаю, что вы можете использовать sql-error-codes.xml для обработки собственных кодов ошибок. - person jitter; 05.11.2009