From c1f28f8d357d313b95ebbcc95c7201cc773aa81f Mon Sep 17 00:00:00 2001
From: Joas Schilling <coding@schilljs.com>
Date: Mon, 7 Dec 2020 19:35:01 +0100
Subject: [PATCH] Make debugging migration exceptions easier

Signed-off-by: Joas Schilling <coding@schilljs.com>
---
 lib/private/DB/MigrationService.php | 9 ++++++++-
 1 file changed, 8 insertions(+), 1 deletion(-)

diff --git a/lib/private/DB/MigrationService.php b/lib/private/DB/MigrationService.php
index 9c94cbc61fa..27e03318d6b 100644
--- a/lib/private/DB/MigrationService.php
+++ b/lib/private/DB/MigrationService.php
@@ -27,6 +27,7 @@
 
 namespace OC\DB;
 
+use Doctrine\DBAL\Exception\DriverException;
 use Doctrine\DBAL\Platforms\OraclePlatform;
 use Doctrine\DBAL\Platforms\PostgreSqlPlatform;
 use Doctrine\DBAL\Schema\Index;
@@ -421,7 +422,13 @@ class MigrationService {
 		// read known migrations
 		$toBeExecuted = $this->getMigrationsToExecute($to);
 		foreach ($toBeExecuted as $version) {
-			$this->executeStep($version, $schemaOnly);
+			try {
+				$this->executeStep($version, $schemaOnly);
+			} catch (DriverException $e) {
+				// The exception itself does not contain the name of the migration,
+				// so we wrap it here, to make debugging easier.
+				throw new \Exception('Database error when running migration ' . $to . ' for app ' . $this->getApp(), 0, $e);
+			}
 		}
 	}
 
-- 
GitLab