Mysql
 sql >> база данни >  >> RDS >> Mysql

Как да заснемете MySQL кодове за грешки и съобщения с помощта на Laravel 5.2?

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. Как мога да се свържа с MySQL в Python 3 на Windows?

  2. Изтриване на всички редове, по-стари от 5 дни

  3. Zend_Db:Как да получа броя на редовете от таблица?

  4. Използване на SQL JOIN и COUNT

  5. Как да извлечете няколко реда от база данни в PHP