码迷,mamicode.com
首页 > 数据库 > 详细

thinkphp获取mysql错误

时间:2015-08-18 16:44:26      阅读:350      评论:0      收藏:0      [点我收藏+]

标签:

最近用thinkphp时发现无法捕获mysql的错误信息,例如向表中插入一个主键 重复的数据时,程序便卡在那条语句上,就像下面这样

:(

SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry ‘1‘ for key ‘PRIMARY‘

错误位置

FILE: D:\*****\ThinkPHP\Library\Think\Db\Driver.class.php  LINE: 226

TRACE

#0 D:\*****\ThinkPHP\Library\Think\Db\Driver.class.php(226): PDOStatement->execute()


在代码中 使用try catch 无效,最后修改 Driver.class.php文件

中169行和226行的

$result =   $this->PDOStatement->execute();

修改为

try{//lighthouse 
   $result =   $this->PDOStatement->execute() ;
}catch (\PDOException $e) {
   echo ‘queryStr=‘.$this->queryStr.‘<br/>‘;
   print "Error: " . $e->getMessage() . "<br/>";
   return -1;
}

这样就可以灵活处理pdo的错误了,当然上面的显示错误信息的代码,可以改成给管理员发邮件,或是记录日志等功能。

这个办法改动了框架底层,以后升级时会比较麻烦。哪位朋友有更好的办法还请不吝告知。

thinkphp获取mysql错误

标签:

原文地址:http://my.oschina.net/u/2403409/blog/494016

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!