thinkphp獲取mysql錯誤

最近用thinkphp時發現沒法捕獲mysql的錯誤信息,例如向表中插入一個主鍵 重複的數據時,程序便卡在那條語句上,就像下面這樣php

:(mysql

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

錯誤位置

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

TRACE

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


在代碼中 使用try catch 無效,最後修改 Driver.class.php文件框架

中169行和226行的this

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

修改成spa

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

這樣就能夠靈活處理pdo的錯誤了,固然上面的顯示錯誤信息的代碼,能夠改爲給管理員發郵件,或是記錄日誌等功能。
日誌

這個辦法改動了框架底層,之後升級時會比較麻煩。哪位朋友有更好的辦法還請不吝告知。code

相關文章
相關標籤/搜索