From c967c9977f9014114e8ebc0f122d04b3aabb4784 Mon Sep 17 00:00:00 2001 From: Nicole Cordes <typo3@cordes.co> Date: Mon, 17 Dec 2018 14:47:41 +0100 Subject: [PATCH] [BUGFIX] Catch error in database Upgrade Wizard If an extension provides wrong SQL in ext_tables.sql, the upgrade wizard is skipped completely. This patch catches the current exception and outputs the error that needs to be resolved manually. Resolves: #87187 Releases: master, 9.5 Change-Id: I903ce7fdc9373eee66da7bed86698c42a2731dc7 Reviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/59182 Reviewed-by: Benni Mack <benni@typo3.org> Reviewed-by: Markus Klein <markus.klein@typo3.org> Reviewed-by: Susanne Moog <look@susi.dev> Tested-by: TYPO3com <noreply@typo3.com> Tested-by: Benni Mack <benni@typo3.org> Tested-by: Susanne Moog <look@susi.dev> --- .../install/Classes/Controller/UpgradeController.php | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/typo3/sysext/install/Classes/Controller/UpgradeController.php b/typo3/sysext/install/Classes/Controller/UpgradeController.php index 17bdbfd077ef..6e9b66e008d2 100644 --- a/typo3/sysext/install/Classes/Controller/UpgradeController.php +++ b/typo3/sysext/install/Classes/Controller/UpgradeController.php @@ -24,6 +24,7 @@ use Symfony\Component\Finder\Finder; use Symfony\Component\Finder\SplFileInfo; use TYPO3\CMS\Core\Core\Environment; use TYPO3\CMS\Core\Database\ConnectionPool; +use TYPO3\CMS\Core\Database\Schema\Exception\StatementException; use TYPO3\CMS\Core\FormProtection\FormProtectionFactory; use TYPO3\CMS\Core\FormProtection\InstallToolFormProtection; use TYPO3\CMS\Core\Http\JsonResponse; @@ -940,10 +941,15 @@ class UpgradeController extends AbstractController // ext_localconf, db and ext_tables must be loaded for the updates :( $this->loadExtLocalconfDatabaseAndExtTables(false); $upgradeWizardsService = new UpgradeWizardsService(); - $adds = $upgradeWizardsService->getBlockingDatabaseAdds(); - $this->resetGlobalContainer(); + $adds = []; $needsUpdate = false; - if (!empty($adds)) { + try { + $adds = $upgradeWizardsService->getBlockingDatabaseAdds(); + $this->resetGlobalContainer(); + if (!empty($adds)) { + $needsUpdate = true; + } + } catch (StatementException $exception) { $needsUpdate = true; } return new JsonResponse([ -- GitLab