MySQL错误代码类别

时间:2011-10-03 17:02:22

标签: php mysql exception-handling error-handling

我知道MySQL错误分为客户端和服务器类型。有没有人在编号中看到任何进一步的结构?

我喜欢隐藏用户错误并尝试恢复并继续执行的应用程序,因此我尝试从打印字符串切换为“Doh!Connection failed”。到一个自定义类的数据库异常和一个处理程序,以捕获所有数据库连接错误,这些错误没有在抛出它们或被重新抛出的函数中捕获。我想我可以尝试在那里恢复,如果失败则重新投掷。我想我可能会尝试使用不同的catch块来处理不同类型的错误,例如连接失败,内存错误,准备好的过程错误等等。当我试图找出连接错误的测试时,似乎有几个集群可能与此有关,但我不确定其中是否有一些是连接错误!例如:错误2048:(CR_INVALID_CONN_HANDLE)连接句柄无效。(这会发生什么时候?!?)

briandunning.com/error-codes/?source=MySQL中列出的某些错误具有SQLSTATE代码。这些是什么?

我希望我可以使用现有代码测试范围。 有没有其他人试图这样做?有PEAR套餐吗?一本好书怎么样?

如果他们没有遵循逻辑模式,我会更好地滚动自己的自定义代码吗?有没有更好的方法我没有看到?这是我第一次有例外情况,所以我可能会说这一切都错了。谢谢!

1 个答案:

答案 0 :(得分:1)

  

列出的一些错误具有SQLSTATE代码。这些是什么?

来自MySQL手册:

  

const char *mysql_sqlstate(MYSQL *mysql)
  返回以null结尾的字符串,其中包含最近执行的SQL语句的SQLSTATE错误代码。错误代码由五个字符组成。 '00000'表示“无错误。”值由ANSI SQL和ODBC指定

此页面及其子页面应告诉您需要知道的所有内容:
http://dev.mysql.com/doc/refman/5.0/en/error-handling.html

以下是来自IBM的SQLSTATE错误列表,其中包含5个字符错误代码后面的结构:http://publib.boulder.ibm.com/infocenter/idshelp/v10/index.jsp?topic=/com.ibm.sqls.doc/sqls520.htm

引用:

  

下表是解释类代码值的快速参考。

SQLSTATE 
Class_Code_Value  Outcome
 00               Success 
 01               Success with warning 
 02               No data found 
 >= 03            Error or warning