怎么让mysql异常理,mysql异常处理

MySQL异常处理浅析

MySQL的异常处理分析如下:

成都创新互联专注为客户提供全方位的互联网综合服务,包含不限于成都网站设计、成都做网站、外贸网站建设、松江网络推广、微信平台小程序开发、松江网络营销、松江企业策划、松江品牌公关、搜索引擎seo、人物专访、企业宣传片、企业代运营等,从售前售中售后,我们都将竭诚为您服务,您的肯定,是我们最大的嘉奖;成都创新互联为所有大学生创业者提供松江建站搭建服务,24小时服务热线:18982081108,官方网址:www.cdcxhl.com

标准格式

DECLARE

handler_type

HANDLER

FOR

condition_value[,...]

statement

handler_type:

CONTINUE

|

EXIT

|

UNDO

--这个暂时不支持

condition_value:

SQLSTATE

[VALUE]

sqlstate_value

|

condition_name

|

SQLWARNING

|

NOT

FOUND

|

SQLEXCEPTION

|

mysql_error_code

condition_value细节

1、常用MYSQL

ERROR

CODE

列表

更多错误列表见MySQL安装路径下

比如我的/usr/local/mysql/share/mysql/errmsg.txt

说明一下:SQLSTATE

[VALUE]

sqlstate_value这种格式是专门为ANSI

SQL

ODBC以及其他的标准.

并不是所有的MySQL

ERROR

CODE

都映射到SQLSTATE。

2、如果你不想插ERROR

CODE的话,就用速记条件来代替

SQLWARNING

代表所有以01开头的错误代码

NOT

FOUND

代表所有以02开头的错误代码,当然也可以代表一个游标到达数据集的末尾。

SQLEXCEPTION

代表除了SQLWARNING和NOT

FOUND

的所有错误代码

3、我们现在就用手册上的例子

CREATE

TABLE

t

(s1

int,primary

key

(s1));

mysql

use

t_girl

Database

changed

mysql

CREATE

TABLE

t

(s1

int,primary

key

(s1));

Query

OK,

rows

affected

(0.00

sec)

mysql

mysql

mysql

DELIMITER

||

mysql

CREATE

PROCEDURE

handlerdemo

()

-

BEGIN

-

DECLARE

EXIT

HANDLER

FOR

SQLSTATE

'23000'

BEGIN

END;

--

遇到重复键值就退出

-

SET

@x

=

1;

-

INSERT

INTO

t

VALUES

(1);

-

SET

@x

=

2;

-

INSERT

INTO

t

VALUES

(1);

-

SET

@x

=

3;

-

END||

Query

OK,

rows

affected

(0.00

sec)

mysql

DELIMITER

;

mysql

call

handlerdemo();

Query

OK,

rows

affected

(0.00

sec)

mysql

select

@x;

+------+

|

@x

|

+------+

|

2

|

+------+

1

row

in

set

(0.00

sec)

mysql

call

handlerdemo();

Query

OK,

rows

affected

(0.00

sec)

mysql

select

@x;

+------+

|

@x

|

+------+

|

1

|

+------+

1

row

in

set

(0.00

sec)

mysql

现在来看一下遇到错误继续的情况

mysql

truncate

table

t;

Query

OK,

rows

affected

(0.01

sec)

mysql

DELIMITER

$$

mysql

DROP

PROCEDURE

IF

EXISTS

`t_girl`.`handlerdemo`$$

Query

OK,

rows

affected

(0.00

sec)

mysql

CREATE

DEFINER=`root`@`localhost`

PROCEDURE

`handlerdemo`()

-

BEGIN

-

DECLARE

CONTINUE

HANDLER

FOR

SQLSTATE

'23000'

BEGIN

END;

-

SET

@x

=

1;

-

INSERT

INTO

t

VALUES

(1);

-

SET

@x

=

2;

-

INSERT

INTO

t

VALUES

(1);

-

SET

@x

=

3;

-

END$$

Query

OK,

rows

affected

(0.01

sec)

mysql

DELIMITER

;

mysql

call

handlerdemo();

Query

OK,

rows

affected

(0.00

sec)

mysql

select

@x;

+------+

|

@x

|

+------+

|

3

|

+------+

1

row

in

set

(0.00

sec)

mysql

call

handlerdemo();

Query

OK,

rows

affected

(0.00

sec)

mysql

select

@x;

+------+

|

@x

|

+------+

|

3

|

+------+

1

row

in

set

(0.00

sec)

mysql

可以看到,始终执行到最后。

当然,上面的SQLSTATE

'23000'可以替换为1062

我们来看一下警告。

mysql

alter

table

t

add

s2

int

not

null;

Query

OK,

rows

affected

(0.01

sec)

Records:

Duplicates:

Warnings:

此列没有默认值,插入的时候会出现警告或者1364错误提示。

mysql

DELIMITER

$$

mysql

DROP

PROCEDURE

IF

EXISTS

`t_girl`.`handlerdemo`$$

Query

OK,

rows

affected,

1

warning

(0.00

sec)

mysql

CREATE

DEFINER=`root`@`localhost`

PROCEDURE

`handlerdemo`()

-

BEGIN

-

DECLARE

CONTINUE

HANDLER

FOR

1062

BEGIN

END;

-

DECLARE

CONTINUE

HANDLER

FOR

SQLWARNING

-

BEGIN

-

update

t

set

s2

=

2;

-

END;

-

DECLARE

CONTINUE

HANDLER

FOR

1364

-

BEGIN

-

INSERT

INTO

t(s1,s2)

VALUES

(1,3);

-

END;

-

SET

@x

=

1;

-

INSERT

INTO

t(s1)

VALUES

(1);

-

SET

@x

=

2;

-

INSERT

INTO

t(s1)

VALUES

(1);

-

SET

@x

=

3;

-

END$$

Query

OK,

rows

affected

(0.00

sec)

mysql

DELIMITER

;

mysql

call

handlerdemo();

Query

OK,

rows

affected

(0.00

sec)

mysql

select

*

from

t;

+----+----+

|

s1

|

s2

|

+----+----+

|

1

|

3

|

+----+----+

1

row

in

set

(0.00

sec)

遇到错误的时候插入的新记录。

mysql

select

@x;

+------+

|

@x

|

+------+

|

3

|

+------+

1

row

in

set

(0.00

sec)

MYSQL访问数据,出现异常,这个要怎么解决

Mysql

远程连接Mysql服务器的数据库,错误代码是1130,ERROR 1130: Host xxx.xxx.xxx.xxx is not allowed to connect to this MySQL server

猜想是无法给远程连接的用户权限问题。

这样子操作mysql库,即可解决。

在本机登入mysql后,更改 “mysql” 数据库里的 “user” 表里的 “host” 项,从”localhost”改称'%'即可

mysql -u root -p

mysql;use mysql;

mysql;select 'host' from user where user='root';

mysql;update user set host = '%' where user ='root';

mysql;flush privileges;

mysql;select 'host' from user where user='root';

第一句:以权限用户root登录

第二句:选择mysql库

第三句:查看mysql库中的user表的host值(即可进行连接访问的主机/IP名称)

第四句:修改host值(以通配符%的内容增加主机/IP地址),当然也可以直接增加IP地址

第五句:刷新MySQL的系统权限相关表

第六句:再重新查看user表时,有修改。。

重起mysql服务即可完成。

关于远程mysql连接异常的处理方法

关于远程mysql连接异常的处理方法

两种种使用mysqlcheck tablerepair table sql语句另种使用MySQL提供myisamchk, isamchk数据检测恢复工具前者使用起比较简便推荐使用 1. check table repair table 登陆mysql 终端: mysql -uxxxxx -p dbname check table tabTest; 现结说StatusOK则用修复Error用: repair table tabTest; 进行修复修复用check table命令进行检查新版本phpMyAdmin面使用check/repair功能 2. myisamchk, isamchk 其myisamchk适用于MYISAM类型数据表isamchk适用于ISAM类型数据表两条命令主要参数相同般新系统都使用MYISAM作缺省数据表类型myisamchk例进行说明发现某数据表现问题使用: myisamchk tablename.MYI 进行检测需要修复使用: myisamchk -of tablename.MYI 关于myisamchk详细参数说明参见使用帮助需要注意进行修改必须确


网站标题:怎么让mysql异常理,mysql异常处理
分享网址:http://ybzwz.com/article/dsccopp.html