/**
  * Throw a PDO Exception based on the last PDO error.
  */
 protected function throwPDOException()
 {
     $error_info = $this->dbh->errorInfo();
     // We rebuild a message formatted in the same way as PDO.
     $exception = new \PDOException("SQLSTATE[" . $error_info[0] . "]: General error " . $error_info[1] . ": " . $error_info[2]);
     $exception->errorInfo = $error_info;
     throw $exception;
 }