Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

Laravel 5.2 का उपयोग करके MySQL त्रुटि कोड और संदेशों को कैसे कैप्चर करें?

Laravel PDO का उपयोग करता है, इसलिए आप errorInfo का उपयोग कर सकते हैं। वेरिएबल जो SQLSTATE त्रुटि और संदेश देता है। मूल रूप से, आपको $e->errorInfo; . का उपयोग करने की आवश्यकता है

यदि आप डेटाबेस में सभी SQL त्रुटियों को लॉग करना चाहते हैं, तो आप अपवाद हैंडलर (app/Exceptions/Handler.php) का उपयोग कर सकते हैं। और 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..
    // ....
}



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. ClusterControl 1.7.2 की घोषणा:TimescaleDB और MySQL 8.0 के लिए बेहतर पोस्टग्रेएसक्यूएल बैकअप और समर्थन

  2. Neo4j - Cypher . का उपयोग करके एक बाधा बनाएं

  3. Ubuntu पर अप्राप्य Percona/MySQL स्थापित करना

  4. मैसकल के साथ सी # में तैयार वक्तव्य का उपयोग करना

  5. क्या Amazon Redshift से SQL डंप करने का कोई तरीका है?