From d11ec1a803334d1ab5f34d14fca893c178b99268 Mon Sep 17 00:00:00 2001 From: ildyria Date: Fri, 9 Feb 2024 22:12:17 +0100 Subject: [PATCH 1/3] if LegacyIdException is thrown provide proper solution --- app/Exceptions/Handler.php | 2 + .../Handlers/LegacyIdExceptionHandler.php | 46 +++++++++++++++++++ 2 files changed, 48 insertions(+) create mode 100644 app/Exceptions/Handlers/LegacyIdExceptionHandler.php diff --git a/app/Exceptions/Handler.php b/app/Exceptions/Handler.php index b2487d0fe30..4e2dd7478b0 100644 --- a/app/Exceptions/Handler.php +++ b/app/Exceptions/Handler.php @@ -8,6 +8,7 @@ use App\Exceptions\Handlers\AccessDBDenied; use App\Exceptions\Handlers\AdminSetterHandler; use App\Exceptions\Handlers\InstallationHandler; +use App\Exceptions\Handlers\LegacyIdExceptionHandler; use App\Exceptions\Handlers\MigrationHandler; use App\Exceptions\Handlers\NoEncryptionKey; use App\Exceptions\Handlers\ViteManifestNotFoundHandler; @@ -108,6 +109,7 @@ class Handler extends ExceptionHandler AdminSetterHandler::class, MigrationHandler::class, ViteManifestNotFoundHandler::class, + LegacyIdExceptionHandler::class, ]; /** @var array> */ diff --git a/app/Exceptions/Handlers/LegacyIdExceptionHandler.php b/app/Exceptions/Handlers/LegacyIdExceptionHandler.php new file mode 100644 index 00000000000..5cf76c231db --- /dev/null +++ b/app/Exceptions/Handlers/LegacyIdExceptionHandler.php @@ -0,0 +1,46 @@ +getMessage(), 'Numeric value out of range: 1264') + ) { + return true; + } + } while ($e = $e->getPrevious()); + + return false; + } + + /** + * {@inheritDoc} + */ + public function renderHttpException(SymfonyResponse $defaultResponse, HttpException $e): SymfonyResponse + { + return response()->view('error.error', [ + 'code' => $e->getStatusCode(), + 'type' => class_basename($e), + 'message' => 'SQLSTATE: Numeric value out of range: 1264 for column \'legacy_id\'. To fix, please set
force_32bit_ids
to
1
in your config.', + ], $e->getStatusCode(), $e->getHeaders()); + } +} From ef208abf001436db35f20366e8c81e104c3cdfbd Mon Sep 17 00:00:00 2001 From: ildyria Date: Fri, 9 Feb 2024 22:13:30 +0100 Subject: [PATCH 2/3] better --- app/Exceptions/Handlers/LegacyIdExceptionHandler.php | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/app/Exceptions/Handlers/LegacyIdExceptionHandler.php b/app/Exceptions/Handlers/LegacyIdExceptionHandler.php index 5cf76c231db..40b99eadb40 100644 --- a/app/Exceptions/Handlers/LegacyIdExceptionHandler.php +++ b/app/Exceptions/Handlers/LegacyIdExceptionHandler.php @@ -9,9 +9,10 @@ use Symfony\Component\HttpKernel\Exception\HttpExceptionInterface as HttpException; /** - * Class AccessDBDenied. + * Class LegacyIdExceptionHandler. * - * If access to the DB is denied, we need to run the installation. + * If SQLSTATE: Numeric value out of range: 1264 is throw it means we are interacting with 32 bit DB. + * Advise to set config parameter. */ class LegacyIdExceptionHandler implements HttpExceptionHandler { @@ -40,7 +41,7 @@ public function renderHttpException(SymfonyResponse $defaultResponse, HttpExcept return response()->view('error.error', [ 'code' => $e->getStatusCode(), 'type' => class_basename($e), - 'message' => 'SQLSTATE: Numeric value out of range: 1264 for column \'legacy_id\'. To fix, please set
force_32bit_ids
to
1
in your config.', + 'message' => 'SQLSTATE: Numeric value out of range: 1264 for column \'legacy_id\'. To fix, please set `force_32bit_ids` to `1` in your config.', ], $e->getStatusCode(), $e->getHeaders()); } } From 3aea2fd03fbc81a11c592877519bbe02ceea87e2 Mon Sep 17 00:00:00 2001 From: ildyria Date: Fri, 9 Feb 2024 22:15:41 +0100 Subject: [PATCH 3/3] improve directions --- app/Exceptions/Handlers/LegacyIdExceptionHandler.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/Exceptions/Handlers/LegacyIdExceptionHandler.php b/app/Exceptions/Handlers/LegacyIdExceptionHandler.php index 40b99eadb40..2c33955cf62 100644 --- a/app/Exceptions/Handlers/LegacyIdExceptionHandler.php +++ b/app/Exceptions/Handlers/LegacyIdExceptionHandler.php @@ -41,7 +41,7 @@ public function renderHttpException(SymfonyResponse $defaultResponse, HttpExcept return response()->view('error.error', [ 'code' => $e->getStatusCode(), 'type' => class_basename($e), - 'message' => 'SQLSTATE: Numeric value out of range: 1264 for column \'legacy_id\'. To fix, please set `force_32bit_ids` to `1` in your config.', + 'message' => 'SQLSTATE: Numeric value out of range: 1264 for column \'legacy_id\'. To fix, please set `force_32bit_ids` to `1` in your Settings => More.', ], $e->getStatusCode(), $e->getHeaders()); } }