# option is ROLLBACK, since the snapshots would have been released.
$this->trxStatus = self::STATUS_TRX_ERROR;
$this->trxStatusCause =
- $this->makeQueryException( $lastError, $lastErrno, $sql, $fname );
+ $this->getQueryExceptionAndLog( $lastError, $lastErrno, $sql, $fname );
$tempIgnore = false; // cannot recover
$this->trxStatusIgnoredCause = null;
}
if ( $tempIgnore ) {
$this->queryLogger->debug( "SQL ERROR (ignored): $error\n" );
} else {
- $exception = $this->makeQueryException( $error, $errno, $sql, $fname );
+ $exception = $this->getQueryExceptionAndLog( $error, $errno, $sql, $fname );
throw $exception;
}
* @param string $fname
* @return DBError
*/
- private function makeQueryException( $error, $errno, $sql, $fname ) {
+ private function getQueryExceptionAndLog( $error, $errno, $sql, $fname ) {
$sql1line = mb_substr( str_replace( "\n", "\\n", $sql ), 0, 5 * 1024 );
$this->queryLogger->error(
"{fname}\t{db_server}\t{errno}\t{error}\t{sql1line}",
'error' => $error,
'sql1line' => $sql1line,
'fname' => $fname,
+ 'trace' => ( new RuntimeException() )->getTraceAsString()
] )
);
$this->queryLogger->debug( "SQL ERROR: " . $error . "\n" );