mysql5的异常处理--

mysql5的异常处理--

ID:22376546

大小:83.50 KB

页数:12页

时间:2018-10-28

mysql5的异常处理--_第1页
mysql5的异常处理--_第2页
mysql5的异常处理--_第3页
mysql5的异常处理--_第4页
mysql5的异常处理--_第5页
资源描述:

《mysql5的异常处理--》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库

1、MySQL5的异常处理>>  1.SampleProblem:LogOfFailures问题样例:故障记录  当INSERT失败时,我希望能将其记录在日志文件中我们用来展示出错处理的问题样例是很普通的。我希望得到错误的记录。当INSERT失败时,我想在另一个文件中记下这些错误的信息,例如出错时间,出错原因等。我对插入特别感兴趣的原因是它将违反外键关联的约束  2.SampleProblem:LogOfFailures(2)  mysql>CREATETABLEt2  1INT,PRIMARYKEY(s1))  eng

2、ine=innodb;//  mysql>CREATETABLEt3(s1INT,KEY(s1),  FOREIGNKEY(s1)REFERENCESt2(s1))  engine=innodb;//  mysql>INSERTINTOt3VALUES(5);//  ...  ERROR1216(23000):CannotaddorupdateachildropleProblem:LogOfFailures  CREATETABLEerror_log(error_message  CHAR(80))//  下一

3、步就是建立一个在做插入动作出错时存储错误的表。  4.SampleProblem:LogOfErrors  CREATEPROCEDUREp22(parameter1INT)  BEGIN  DECLAREEXITHANDLERFOR1216  INSERTINTOerror_logVALUES  (CONCAT('Time:',current_date,  '.ForeignKeyReferenceFailureFor  Value=',parameter1));  INSERTINTOt

4、3VALUES(parameter1);  END;//  上面就是我们的程序。这里的第一个语句DECLAREEXITHANDLER是用来处理异常的。意思是如果错误1215发生了,这个程序将会在错误记录表中插入一行。EXIT意思是当动作成功提交后退出这个复合语句。  5.SampleProblem:LogOfErrors  CALLp22(5)//  调用这个存储过程会失败,这很正常,因为5值并没有在主键表中出现。但是没有错误信息返回因为出错处理已经包含在过程中了。t3表中没有增加任何东西,但是error_log表中记录下

5、了一些信息,这就告诉我们INSERTintotablet3动作失败。  DECLAREHANDLERsyntax声明异常处理的语法  DECLARE  {EXIT

6、CONTINUE}  HANDLERFOR  {error-number

7、{SQLSTATEerror-string}

8、condition}  SQLstatement  上面就是错误处理的用法,也就是一段当程序出错后自动触发的代码。MySQL允许两种处理器,一种是EXIT处理,我们刚才所用的就是这种。另一种就是我们将要演示的,CONTINUE处理,它跟EXIT

9、处理类似,不同在于它执行后,原主程序仍然继续运行,那么这个复合语句就没有出口了。  1.DECLARECONTINUEHANDLERexampleCONTINUE处理例子  CREATETABLEt4(s1int,primarykey(s1));//  CREATEPROCEDUREp23()  BEGIN  DECLARECONTINUEHANDLER  FORSQLSTATE'23000'SETx2=1;  SETx=1;  INSERTINTOt4VALUES(1);  SETx=2;  INSERT

10、INTOt4VALUES(1);  SETx=3;  END;//  这是MySQL参考手册上的CONTINUE处理的例子,这个例子十分好,所以我把它拷贝到这里。通过这个例子我们可以看出CONTINUE处理是如何工作的。  2.DECLARECONTINUEHANDLER声明CONTINUE异常处理  CREATETABLEt4(s1int,primarykey(s1));//  CREATEPROCEDUREp23()  BEGIN  DECLARECONTINUEHANDLER  FORSQLSTATE'230

11、00'SETx2=1;<--  SETx=1;  INSERTINTOt4VALUES(1);  SETx=2;  INSERTINTOt4VALUES(1);  SETx=3;  END;//  这次我将为SQLSTATE值定义一个处理程序。还记得前面我们使用的MySQL错误代码1216

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。