当前位置: 首页 > 图文教程 > 数据库 > MYSQL > MySQL5的异常处理

MYSQL
Mysql中mysqldump命令使用详解
常见mysql错误代码详细解析
设置 MySql 数据同步
MySQL集群配置
ASP连接MySQL数据库的方法
linux操作系统下建立mysql镜像数据库
加大MySql的最大连接数
使用"函数递归"实现基于php和MySQL的动态树型菜单
基于MySQL的高性能数据库应用开发
在同一台机器上运行多个MySQL服务器
从MySQL到ORACLE程序迁移的注意事项
安全专家讲解Mysql故障详细的诊断过程
Mysql中日期和时间函数应用不用求人
你可能不知道 Mysql的常用命令收集
您可能不知道 MySQL表最大能达到多少
mysql5中遭遇的字符集问题及其解决方案
教你轻松的掌握 MYSQL连接字符集和校对
快速的掌握可以运行MySQL的操作系统
在服务器上安装使用 MySQL 的注意事项
简简单单掌握对MySQL无效数据的约束

MYSQL 中的 MySQL5的异常处理


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-10-30   浏览: 98 ::
收藏到网摘: n/a

1. Sample Problem: Log Of Failures 问题样例:故障记录

当INSERT失败时,我希望能将其记录在日志文件中我们用来展示出错处理的问题样例是很普通的。我希望得到错误的记录。当INSERT失败时,我想在另一个文件中记下这些错误的信息,例如出错时间,出错原因等。我对插入特别感兴趣的原因是它将违反外键关联的约束

2. Sample Problem: Log Of Failures (2)

mysql> CREATE TABLE t2

1 INT, PRIMARY KEY (s1))

engine=innodb;//

mysql> CREATE TABLE t3 (s1 INT, KEY (s1),

FOREIGN KEY (s1) REFERENCES t2 (s1))

engine=innodb;//

mysql> INSERT INTO t3 VALUES (5);//

...

ERROR 1216 (23000): Cannot add or update a child row: a foreign key

constraint fails(这里显示的是系统的出错信息)

我开始要创建一个主键表,以及一个外键表。我们使用的是InnoDB,因此外键关联检查是打开的。然后当我向外键表中插入非主键表中的值时,动作将会失败。当然这种条件下可以很快找到错误号1216。

3. Sample Problem: Log Of Failures

CREATE TABLE error_log (error_message

CHAR(80))//

下一步就是建立一个在做插入动作出错时存储错误的表。

4. Sample Problem: Log Of Errors

CREATE PROCEDURE p22 (parameter1 INT)

BEGIN

DECLARE EXIT HANDLER FOR 1216

INSERT INTO error_log VALUES

(CONCAT('Time: ',current_date,

'. Foreign Key Reference Failure For

Value = ',parameter1));

INSERT INTO t3 VALUES (parameter1);

END;//

上面就是我们的程序。这里的第一个语句DECLARE EXIT HANDLER是用来处理异常的。意思是如果错误1215发生了,这个程序将会在错误记录表中插入一行。EXIT意思是当动作成功提交后退出这个复合语句。

5. Sample Problem: Log Of Errors

CALL p22 (5) //

调用这个存储过程会失败,这很正常,因为5值并没有在主键表中出现。但是没有错误信息返回因为出错处理已经包含在过程中了。t3表中没有增加任何东西,但是error_log表中记录下了一些信息,这就告诉我们INSERT into table t3动作失败。

DECLARE HANDLER syntax 声明异常处理的语法

DECLARE

{ EXIT | CONTINUE }

HANDLER FOR