`
greens.leaf
  • 浏览: 62160 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

SQLSTATE到底是什么意思

阅读更多
在访问SQLServer2000/2005的时候,总是会报告SQLSTATE=...,这个东西到底是什么意思?

SQL92 规范中就已经明确规定了 SQLSTATE。

在SQLServer 2000的联机丛书中,解释ODBC错误信息的时候说到:

根据 X/Open 和 SQL Access Group SQL CAE 规范 (1992) 所进行的定义,SQLERROR 返回 SQLSTATE 值。SQLSTATE 值是包含五个字符的字符串。下表列出了驱动程序可以为 SQLError 返回的 SQLSTATE 值。

为 SQLSTATE 返回的字符串值由两个字符的类值后接三个字符的子类值组成。类值 01 表明是一种警告,后跟随 SQL_SUCCESS_WITH_INFO 的返回代码。只要类值不是 01(IM 除外),则表明是一种错误,后跟随 SQL_ERROR 的返回代码。类 IM 专门用于表明从 ODBC 实现产生的警告和错误。任何类中子类值 000 均用于实现给定类中所定义条件。这种类值和子类值的分配方法由 SQL-92 定义。



升级到SQL 2005以后的SQLSTATE有了变化,google sqlstate odbc3.x mapping时可以得到msdn上提供的从odbc2.x 到odbc 3.x 过程中SQLSTATE的变化映射。在这篇文章的开头这样说的:

In ODBC 3.x, HYxxx SQLSTATEs are returned instead of S1xxx, and 42Sxx SQLSTATEs are returned instead of S00XX. This was done to align with X/Open and ISO standards. In many cases, the mapping is not one-to-one because the standards have redefined the interpretation of several SQLSTATEs.


所以说如果想知道返回的SQLSTATE到底是怎么回事,查上述两篇文章可以知道个大概齐。

此外应用从ODBC2.x升级到ODBC3.x的时候,如果原先根据返回的SQLSTATE做了相应的逻辑,现在得改一下。好在SQLServer提供了一个让程序员偷懒的办法,把环境变量设置SQL_ATTR_ODBC_VERSION设置成为SQL_OV_ODBC2,这样底层驱动会返回原来ODBC 2.x的SQLSTATE。

关于这一点,原话是这样说的:

When an ODBC 2.x application is upgraded to an ODBC 3.x application, the application has to be changed to expect ODBC 3.x SQLSTATEs instead of ODBC 2.x SQLSTATEs. The following table lists the ODBC 3.x SQLSTATEs that each ODBC 2.x SQLSTATE is mapped to.
When the SQL_ATTR_ODBC_VERSION environment attribute is set to SQL_OV_ODBC2, the driver posts ODBC 2.x SQLSTATEs instead of ODBC 3.x SQLSTATEs when SQLGetDiagField or SQLGetDiagRec is called. A specific mapping can be determined by noting the ODBC 2.x SQLSTATE in column 1 of the following table that corresponds to the ODBC 3.x SQLSTATE in column 2.
0
1
分享到:
评论

相关推荐

    SQLState错误码查表

    SQLSTATE 错误码查表 SQLSTATE 错误码是 SQL 语句执行过程中出现的错误代码,它们是标准化的错误代码,可以帮助开发者快速地定位和解决问题。本文档提供了 SQLSTATE 错误码的详细信息,包括错误代码、错误描述和...

    DB2 sqlcode sqlstate 说明

    DB2通过返回`sqlcode`和`sqlstate`来告知用户具体的错误信息,帮助开发者和管理员理解并解决问题。`sqlcode`是一个整数值,通常负值表示错误,正值表示警告,而`sqlstate`则是一个五位的字母数字代码,提供了更详细...

    db2sqlstate中英文

    当我们在使用DB2时,难免会遇到各种错误,这些错误通常会以特定的代码形式呈现,其中就包括了SQLSTATE。SQLSTATE是SQL标准定义的一个五位数字或字母的代码,用于标识在执行SQL语句时遇到的问题。本文将深入探讨DB2中...

    DB2 SQLSTATE全集

    DB2 SQLSTATE全集是DB2数据库中用于标识SQL语句执行过程中遇到的错误或警告的一种标准编码系统。SQLSTATE由5个字符组成,前两位代表错误类别,后三位代表具体的错误子类。这些代码提供了关于数据库操作结果的详细...

    DB2-SQLSTATE消息

    DB2-SQLSTATE消息是IBM的DB2数据库系统在处理SQL语句时可能出现的错误或异常情况的反馈机制。SQLSTATE是一种标准化的五字符代码,用于标识SQL操作中遇到的问题,它是由ISO/IEC SQL标准定义的。在这个场景中,我们...

    DB2错误代码(SQLSTATE消息异常)

    在使用DB2过程中,可能会遇到各种错误代码,这些代码通常以SQLSTATE形式出现,它们提供了关于数据库操作失败原因的重要信息。SQLSTATE是一种标准的五字符代码,用于识别SQL语句执行时的错误或异常状态。 标题中的...

    DB2_SQLSTATE__消息异常

    ### DB2 SQLSTATE 消息异常详解 #### 标题与描述解读 标题与描述均指出了一个核心问题——“DB2_SQLSTATE_消息异常”,这实际上是在谈论IBM DB2数据库系统中的SQLSTATE值及其引发的异常情况。SQLSTATE值是SQL标准中...

    DB2 SQLSTATE 错误码对照表.doc

    DB2 SQLSTATE 错误码对照表是DB2数据库系统中用于识别和处理查询或操作过程中发生的问题的一个标准代码系统。这些错误码帮助开发者和管理员理解遇到的具体问题,并找到解决问题的策略。以下是对DB2 SQLSTATE错误码的...

    DB2的SQL、sqlcode、sqlstate错误码中文大全

    因此,本文旨在整理 DB2 的 SQL、sqlcode、sqlstate 错误码大全,提供详细的错误码说明和用户响应方法,帮助用户快速解决问题,提高工作效率。 SQL0000 - SQL0099 在 DB2 中,SQL0000 - SQL0099 错误码系列主要...

    DB2 sqlstate错误码大全.zip

    在使用DB2进行SQL查询或操作时,可能会遇到各种错误,这些错误通常会通过sqlcode和sqlstate来表示。"DB2 sqlstate错误码大全.zip"这个压缩包文件提供了关于DB2系统中的SQL错误码的详细信息,帮助用户理解和解决遇到...

    DB2 sqlcode sqlstate 信息中文解释大全

    涵盖所有常见DB2 sqlcode sqlstate的信息中文解释大全。 是进行DB2相关学习和工作的必备参考资料! 内容粗览: DB2错误信息(按sqlcode排序) sqlcode sqlstate 说明 000 00000 SQL语句成功完成 01xxx SQL语句成功...

    解决SQLSTATE[HY000]: General error: 1205 Lock wait timeout exceeded_runtimeerror怎么修复

    在MySQL数据库操作中,"SQLSTATE[HY000]: General error: 1205 Lock wait timeout exceeded" 是一个常见的错误,它意味着在执行事务时,系统等待锁定资源的时间超过了预设的限制。这个错误通常发生在并发环境中,当...

    DB2 SQLSTATE CODE

    "DB2 SQLSTATE CODE" DB2 SQLSTATE CODE 是一种错误代码系统,由 IBM 开发的关系数据库管理系统 DB2 使用。它提供了一种标准化的方式来报告错误和警告信息,以帮助开发者和管理员快速定位和解决问题。 SQLSTATE ...

    DB2错误信息SQLCODE SQLSTATE.txt

    db2sql存储table数据库nullsqlcode sqlstate 说明 000 00000 SQL语句成功完成 01xxx SQL语句成功完成,但是有警告 +012 01545 未限定的列名被解释为一个有相互关系的引用 +098 01568 动态SQL语句用分号结束...

    对表进行任何操作都不被允许,提示SQLSTATE=57016 SQLCODE=-668 ,原因码 \"7\"的错误:SQL0668N Operation not

    在SQL数据库操作中,我们可能会遇到各种错误代码,其中SQLSTATE=57016 SQLCODE=-668是一个常见的错误,特别是在IBM DB2数据库系统中。这个错误通常表示一个操作无法执行,因为对象(如表)正被其他事务占用或者处于...

    db2 错误码 大全

    在DB2中,错误码通常由SQLCODE和SQLSTATE两部分组成: - **SQLCODE**:是一个整数值,用来表示错误或警告的状态。正数表示警告,负数表示错误。 - **SQLSTATE**:是一个五字符的字符串,用来提供关于错误或警告的更...

    DB2 sqlstate大全

    ### DB2 SQLSTATE 大全 #### 概述 在 DB2 数据库系统中,当执行 SQL 语句时遇到问题或错误,系统会返回一个称为 SQLSTATE 的五位字符代码来标识具体的问题类型。这些 SQLSTATE 代码分为不同的类别(类代码),每个...

    BD2的SQLSTATE信息

    DB2 的信息中心赋值过来的数据 给出来方便大家查看,免得上信息中心很慢

    解决Laravel5.x的php artisan migrate数据库迁移创建操作报错SQLSTATE[42000]

    如果在执行迁移时遇到SQLSTATE[42S01]:Base table or view already exists错误,那么可能是因为在数据库中已经存在相关表或视图,此时应该检查数据库状态,并根据需要删除已经存在的表,然后再次尝试迁移命令。...

    详解DB2 sqlstate 57016 SQLCODE=-668 原因码 "7"错误的快速解决办法

    在使用DB2过程中,可能会遇到各种错误代码,其中SQLSTATE 57016与SQLCODE -668,特别是原因码“7”,是一个常见的错误,通常表示在尝试执行数据库操作时遇到了权限问题。本篇文章将深入探讨这个错误的原因,并提供...

Global site tag (gtag.js) - Google Analytics