我是靠谱客的博主 隐形牛排,最近开发中收集的这篇文章主要介绍mysql 抛异常_MySQL异常处理,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

跑数据流程这几天总是出错,暂时还没有精力重构,先处理一些紧急的问题吧。鉴于目前问题都出在MySQL执行查询出错的情况,决定对mysql_query进行封装。封装函数如下。

目前只处理2006错误,对于1317错误,只有重试的方法,以后再补充。

对于2006错误,需要重连MySQL,但是有一点需要注意的是,在重连之前一定要先关闭之前的连接,否则永远报2006错误

之前没写过异常处理,try{}catch(){},嘿嘿,用了一下就会了。

/**

* @param $sql 需要执行的SQL语句

* @param $link 数据库连接

* @param $conn 使用线上还是线下数据库,默认为线下 online:线上 offline:线下

*/

function dh_mysql_query($sql, &$link=null, $db) {

$i = 0;

do{

try{

$ret = mysql_query($sql);

if(!$ret){

//抛出MySQL错误号

$ec = mysql_errno();

throw new Exception($ec);

}

}catch(Exception $e){

//处理mysql错误号

switch($e->getMessage()){

case '2006':// MySQL Server has gone away

mysql_close($link);

if($db == "online"){

$link = connect_online();

}else {

$link = conn_db();

}

break;

case '1317'://Query execution was interrupted

sleep(3);

break;

}

}

$i ++;

}while(!$ret && $i<5);

if(!$ret){

$ec = mysql_errno();

$err = mysql_error();

$desc = json_encode(array('event'=>'mysql query error','sql'=>$sql,'errno'=>$ec,'errmsg'=>$err,'debug_info'=>debug_backtrace(true)));

write_log($desc);

//curl_send_msg('13691102775',$desc);

//exit($desc);

}

return $ret;

}

以后再补充针对MySQL其他错误的处理方式

最后

以上就是隐形牛排为你收集整理的mysql 抛异常_MySQL异常处理的全部内容,希望文章能够帮你解决mysql 抛异常_MySQL异常处理所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(41)

评论列表共有 0 条评论

立即
投稿
返回
顶部