MySQL错误处理和常见错误代码

本文介绍了MySQL中的错误处理方法,包括定义条件如sqlstate_value和mysql_error_code,以及如何根据错误类型定义continue、exit和undo等不同处理程序。同时列举了常见的MySQL错误类型及其错误代码。
摘要由CSDN通过智能技术生成

目录

MySQL错误处理

定义条件

condition_type参数解析

定义处理程序

handler_type参数

condition_value参数

根据不同的错误类型定义不同的处理程序,举例

MySQL常见的错误类型及其错误代码


MySQL错误处理

关于错误处理就是——定义条件和处理程序

对于特定条件的特殊处理——这些条件可以是——错误,子程序的一般流程

定义条件

#定义条件
declare condition_name condition for [condition_type];

#[condition_type]参数
sqlstate [value] sqlstate_value | mysql_error_code

#举例
declare command_not_allowed condition for sqlstate '42000';
declare command_not_allowed condition for 1142;

condition_name

表示条件的名称,定义后用于declare handler处理语句当中

condition_type

条件的类型,有sqlstate_value 和 mysql_error_code 可选

sqlstate_value

MySQL_error_code

都用于代表MySQL的错误,

sqlstate_value代表长度为5的字符串类型错误代码,MySQL_error_code代表数值类型的错误代码

condition_type参数解析

举例一个名为 ERROR 1142(42000)的错误类型

此时

MySQL错误

定义错误

sqlstate_value = 42000

declare command_not_allowed condition for sqlstate '42000';

MySQL_error_code = 1142

declare command_not_allowed condition for 1142;

关于错误类型请翻到文章最底下

定义处理程序

#语法
declare handler_type handler for condition_value [,…] sp_statement

#handler_type参数
handler_type:
    continue | exit | undo

handler_type参数

handler_type(错误处理类型)

处理方式

continue

不处理,继续执行

exit

遇到错误直接退出

undo

撤回之前的操作 (但MySQL好像不支持)

condition_value参数

错误类型

sqlstate[value] sqlstate_value

包含5个字符的字符串错误值

condition_name

表示declare condition 定义的错误条件的名称

sqlwarning

匹配所有以01开头的sqlstate错误代码

not found

匹配所有以02开头的sqlstate错误代码

sqlexception

匹配所有没有被sqlwarning或not found捕获的sqlstate错误代码

MySQL_error_code

匹配数值类型错误代码

根据不同的错误类型定义不同的处理程序,举例

错误类型

处理例

sqlstate[value] sqlstate_value

declare continue handler for sqlstate '42S02' set @info="no_such_table";

condition_name

自定义的错误类型名

先定义一个错类:declare no_such_table condition for 1146;

定义处理该错误: declare continue handler for no_such_table set @info="NO_SUCH_TABLE";

sqlwarning

declare exit handler for sqlwarning set @info="ERROR";

not found

declare exit handler for not found set @info="NO_SUCH_TABLE";

sqlexception

declare exit handler for sqlexception set @info="ERROR";

MySQL_error_code

declare continue handler for 1146 set @info="NO_SUCH_Table";

MySQL常见的错误类型及其错误代码

MySQL常见错误类型

sqlstate_value

MySQL_error_code

创建表失败

1005

HY000

无法创建数据库

1006

HY000

数据库已存在,创建数据库失败

1007

HY000

数据库不存在,删除数据库失败

1008

HY000

删除数据库文件失败

1011

HY000

不能读取系统表中的记录

1012

HY000

关键字重复,更改记录失败

1022

23000

关闭时发生错误

1023

HY000

记录不存在,找不到记录

1032

HY000

数据表只读,无法修改

1036

HY000

系统内存不足

1041

HY000

无效的主机名

1042

08S01

无效连接

1043

08S01

拒绝用户访问数据库

1044

42000

不能连接数据库,用户名或密码错误

1045

28000

字段不能为空

1048

23000

数据库不存在

1049

42000

数据表已经存在

1050

42S01

未知表

1051

42S02

未知列

1054

42S22

无效sql语句或sql语句为空

1065

42000

不能建立Socket连接

1081

08S01

连接数据库失败,没有连接权限

1130

HY000

数据库用户不存在

1133

42000

当前用户无权访问数据库

1141

42000

当前用户无权访问数据表

1142

42000

当前用户无权访问数据表中的字段

1143

42000

数据表不存在

1146

42S02

该用户没有对表的某某权限

1147

42000

SQL语句语法错误

1149

42000

字段值重复入库失败

1062

23000

唯一约束导致字段值重复,更新记录失败

1169

23000

打开数据表失败

1177

42000

提交事务失败

1180

HY000

回滚事务失败

1181

HY000

加锁超时

1205

HY000

权限不足

1227

42000

MySQL版本过低,不具备此功能

1235

42000

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值
>