1
0
mirror of https://github.com/phpbb/phpbb.git synced 2025-08-11 11:13:59 +02:00

[ticket/17525] Correctly handle Doctrine DB tools exceptions, enrich error info

PHPBB-17525
This commit is contained in:
rxu
2025-06-15 13:03:55 +07:00
parent e34e1759c7
commit 8d1f8af7c6
5 changed files with 27 additions and 27 deletions

View File

@@ -458,34 +458,26 @@ class doctrine implements tools_interface
*/
protected function alter_schema(callable $callback)
{
try
$current_schema = $this->get_schema();
$new_schema = clone $current_schema;
call_user_func($callback, $new_schema);
$comparator = new comparator();
$schemaDiff = $comparator->compareSchemas($current_schema, $new_schema);
$queries = $schemaDiff->toSql($this->get_schema_manager()->getDatabasePlatform());
if ($this->return_statements)
{
$current_schema = $this->get_schema();
$new_schema = clone $current_schema;
call_user_func($callback, $new_schema);
$comparator = new comparator();
$schemaDiff = $comparator->compareSchemas($current_schema, $new_schema);
$queries = $schemaDiff->toSql($this->get_schema_manager()->getDatabasePlatform());
if ($this->return_statements)
{
return $queries;
}
foreach ($queries as $query)
{
// executeQuery() must be used here because $query might return a result set, for instance REPAIR does
$this->connection->executeQuery($query);
}
return true;
return $queries;
}
catch (Exception $e)
foreach ($queries as $query)
{
// @todo: check if it makes sense to properly handle the exception
return [$e->getMessage()];
// executeQuery() must be used here because $query might return a result set, for instance REPAIR does
$this->connection->executeQuery($query);
}
return true;
}
/**

View File

@@ -280,7 +280,9 @@ class installer
}
catch (\Exception $e)
{
$this->iohandler->add_error_message($e->getMessage());
$stack_trace = phpbb_filter_root_path(str_replace("\n", '<br>', $e->getTraceAsString()));
$message = $e->getMessage();
$this->iohandler->add_error_message($message, $stack_trace);
$this->iohandler->send_response(true);
$fail_cleanup = true;
}