Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Làm thế nào để nắm bắt mã lỗi và thông báo MySQL bằng Laravel 5.2?

Laravel sử dụng PDO, vì vậy bạn có thể sử dụng errorInfo biến trả về lỗi SQLSTATE và thông báo. Về cơ bản, bạn cần sử dụng $e->errorInfo;

Nếu bạn muốn đăng nhập tất cả các lỗi SQL vào cơ sở dữ liệu, bạn có thể sử dụng Trình xử lý ngoại lệ (app/Exceptions/Handler.php và lắng nghe QueryExceptions . Một cái gì đó như thế này:

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);
}

Sau đó, bạn có thể sử dụng một cái gì đó như sau:

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. Flask, không phải tất cả các đối số được chuyển đổi trong quá trình định dạng chuỗi

  2. quy ước đặt tên mysql

  3. PHP:Cảnh báo:sort () yêu cầu tham số 1 là mảng, tài nguyên đã cho

  4. Không thể dừng MySQL trên OS X 10.10

  5. Chuyển đổi kết xuất SQL sang JSON?