SQLException.getSQLState 的所有可能值是什么?

2022-09-02 10:45:02

SQLException.getSQLState检索对象的 。此方法可以返回的所有可能值是什么?我是否可以使用该值来识别数据库中发生的特定错误(即,此值是否可以告诉我它是 PK 冲突、唯一约束还是列值太大等)?SQLStateSQLException

此外,该方法应该指示返回的是 X/Open(现在称为 Open Group)SQL CLI 还是 SQL99。唯一可能的值应该是 和 但是我得到的值 。我错过了什么吗?DatabaseMetaData.getSQLStateType()SQLSTATESQLException.getSQLStateDatabaseMetaData.sqlStateXOpen == 1DatabaseMetaData.sqlStateSQL99 == 20

有没有办法使用上述方法的组合来确定数据库中发生的特定类型的错误?我可以指望 的值吗?这些值在数据库提供程序与数据库提供程序之间是否不同?SQLException.getSQLState


答案 1

包含SQLStates的官方文档显然可以以相对较高的价格从ANSI和XOpen购买。但是,大多数数据库的文档都有 SQLState 的列表。最完整(和可访问)的在线列表可能在 DB2 手册中。例如,请查看 DB2 通用消息手册。Oracle(需要TechNet密码)和Sybase等也有在线列表。

至于第二个问题,这是SQLState的意图,但是,各种数据库具有不同程度的合规性。例如,某些将多个本机错误消息映射到同一 SQLState。对于一般使用,人们应该专注于主要代码(SQLState的前两个字符,),然后确定次要代码中是否有更具体的信息(超过000。

http://www.jguru.com/faq/view.jsp?EID=46397


答案 2

MySQL在其参考手册中的服务器错误代码和消息中提供了一些信息