溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

larval中怎樣捕獲mysql錯(cuò)誤

發(fā)布時(shí)間:2020-11-09 09:43:37 來(lái)源:億速云 閱讀:148 作者:小新 欄目:MySQL數(shù)據(jù)庫(kù)

這篇文章主要介紹了larval中怎樣捕獲mysql錯(cuò)誤,具有一定借鑒價(jià)值,需要的朋友可以參考下。希望大家閱讀完這篇文章后大有收獲。下面讓小編帶著大家一起了解一下。

larval捕獲mysql錯(cuò)誤的方法:1、使用errorInfo變量返回SQLSTATE錯(cuò)誤和消息;2、使用異常處理程序“app/Exceptions/Handler.php并偵聽(tīng)QueryExceptions”將所有SQL錯(cuò)誤記錄到數(shù)據(jù)。

Laravel使用PDO,因此您可以使用errorInfo變量返回SQLSTATE錯(cuò)誤和消息?;旧?,您需要使用$e->errorInfo;

如果要將所有SQL錯(cuò)誤記錄到數(shù)據(jù)庫(kù)中,可以使用異常處理程序(app/Exceptions/Handler.php并偵聽(tīng)QueryExceptions。像這樣的:

public function render($request, Exception $e)
{
    switch ($e) {
        case ($e instanceof \Illuminate\Database\QueryException):
            LogTracker::saveSqlError($e);
            break;
        default:
            LogTracker::saveError($e, $e->getCode());
    }
    return parent::render($request, $e);
}

然后你可以用這樣的東西:

public function saveSqlError($exception)
{
    $sql = $exception->getSql();
    $bindings = $exception->getBindings()
    // Process the query's SQL and parameters and create the exact query
    foreach ($bindings as $i => $binding) {
        if ($binding instanceof \DateTime) {
            $bindings[$i] = $binding->format('\'Y-m-d H:i:s\'');
        } else {
            if (is_string($binding)) {
                $bindings[$i] = "'$binding'";
            }
        }
    }
    $query = str_replace(array('%', '?'), array('%%', '%s'), $sql);
    $query = vsprintf($query, $bindings);
    // Here's the part you need
    $errorInfo = $exception->errorInfo;
    $data = [
        'sql'        => $query,
        'message'    => isset($errorInfo[2]) ? $errorInfo[2] : '',
        'sql_state'  => $errorInfo[0],
        'error_code' => $errorInfo[1]
    ];
    // Now store the error into database, if you want..
    // ....
}

感謝你能夠認(rèn)真閱讀完這篇文章,希望小編分享larval中怎樣捕獲mysql錯(cuò)誤內(nèi)容對(duì)大家有幫助,同時(shí)也希望大家多多支持億速云,關(guān)注億速云行業(yè)資訊頻道,遇到問(wèn)題就找億速云,詳細(xì)的解決方法等著你來(lái)學(xué)習(xí)!

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI