thinkphp取得mysqlエラー
最近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行の
次のように変更
これによりpdoのエラーを柔軟に処理できます.もちろん、上記のエラー情報を表示するコードは、管理者にメールを送るか、ログを記録するなどの機能に変更できます.
この方法はフレームワークの下部を変更し、後でアップグレードするのは面倒です.どの友達がもっといい方法があるか教えてください.
:(
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のエラーを柔軟に処理できます.もちろん、上記のエラー情報を表示するコードは、管理者にメールを送るか、ログを記録するなどの機能に変更できます.
この方法はフレームワークの下部を変更し、後でアップグレードするのは面倒です.どの友達がもっといい方法があるか教えてください.