diff --git a/app/Exceptions/Handler.php b/app/Exceptions/Handler.php index 93c62e362e..fbb36c0389 100644 --- a/app/Exceptions/Handler.php +++ b/app/Exceptions/Handler.php @@ -30,6 +30,7 @@ use ErrorException; use FireflyIII\Jobs\MailError; use Illuminate\Auth\AuthenticationException; use Illuminate\Contracts\Foundation\Application; +use Illuminate\Database\QueryException; use Illuminate\Foundation\Exceptions\Handler as ExceptionHandler; use Illuminate\Http\RedirectResponse; use Illuminate\Http\Request; @@ -124,6 +125,14 @@ class Handler extends ExceptionHandler return response()->view('errors.FireflyException', ['exception' => $e, 'debug' => $isDebug], 500); } + // special view for database errors with extra instructions + if($e instanceof QueryException) { + $isDebug = config('app.debug'); + + return response()->view('errors.DatabaseException', ['exception' => $e, 'debug' => $isDebug], 500); + } + + //var_dump($e);exit; return parent::render($request, $e); } diff --git a/resources/lang/en_US/errors.php b/resources/lang/en_US/errors.php index b63c231504..a62e78ebcf 100644 --- a/resources/lang/en_US/errors.php +++ b/resources/lang/en_US/errors.php @@ -33,6 +33,7 @@ return [ 'be_right_back' => 'Be right back!', 'check_back' => 'Firefly III is down for some necessary maintenance. Please check back in a second.', 'error_occurred' => 'Whoops! An error occurred.', + 'db_error_occurred' => 'Whoops! A database error occurred.', 'error_not_recoverable' => 'Unfortunately, this error was not recoverable :(. Firefly III broke. The error is:', 'error' => 'Error', 'error_location' => 'This error occured in file :file on line :line with code :code.', diff --git a/resources/views/errors/DatabaseException.twig b/resources/views/errors/DatabaseException.twig new file mode 100644 index 0000000000..4f56c01a77 --- /dev/null +++ b/resources/views/errors/DatabaseException.twig @@ -0,0 +1,95 @@ + + +
+ + ++ {{ trans('errors.error_not_recoverable') }} +
++ {{ exception.getMessage |default('General unknown errror') }} +
++ {{ trans('errors.error_location', {file: exception.getFile, line: exception.getLine, code: exception.getCode })|raw }} +
++ {{ trans('errors.collect_info')|raw }} + {{ trans('errors.collect_info_more')|raw }} +
++ {{ trans('errors.github_instructions')|raw }} +
++ {{ trans('errors.error_location', {file: exception.getFile, line: exception.getLine, code: exception.getCode })|raw }} +
+{{ exception.getMessage |default('General unknown errror') }}
++ {{ trans('errors.error_location', {file: exception.getFile, line: exception.getLine, code: exception.getCode })|raw }} +
{% if not debug %}