首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何用Kohana3ORM治疗Database_Exception

如何用Kohana3ORM治疗Database_Exception
EN

Stack Overflow用户
提问于 2012-07-04 17:56:27
回答 1查看 1.1K关注 0票数 1

这里是问题

有一个脚本在X时间之后(未知数量在5到40分钟之间)抛出以下错误:MySQL服务器已经离开了,Kohana将其转换为Database_Exception 2006,因此有些信息没有保存到DB中。

这里是我认为可能有用的东西,

代码语言:javascript
复制
class Model_Bar extends ORM {

protected $_belongs_to = array(
    'foo' => array()
);

public function save(){ //Extends the save method
    try {
        $result = parent::save(); //Try parent save
    }  catch (Database_Exception $e) { //Catch exception
        if ($e->getCode() == 2006) { //If exception code == 2006 then DB has gone away
            mysqli_ping(); //Try to refresh DB link
            $result = parent::save(); //Try parent save again
        } else { //Exception code != 2006
            throw new Exception($e); //Throw new DB exception
        }
    }
    return $result; // Return the result from parent::save()
    }
}

问题:如何刷新到Kohana的ORM中的DB的链接?

更多信息:

谢谢!

EN

回答 1

Stack Overflow用户

发布于 2012-12-28 09:19:47

这都是个问题

  • 到达已配置的MYSQL超时。
  • 超过数据包大小
  • 丢包

如果您正在执行长插入(就像批量插入一样),如果您的DB没有为此进行配置,那么代码中的任何更改都不会产生任何影响。您可以尝试重新配置MYSQL实例,然后排除MYSQL的指责,然后尝试修改代码(我怀疑这是问题的根源)。重新尝试保存不会有多大帮助,但却使DB更加繁忙。

另一件事是,如果您使用的是代理(如HAProxy),也要检查超时时间。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11333621

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档