From 565644a74a8f7b8adc466585316bdf84f328f190 Mon Sep 17 00:00:00 2001 From: Fabian Schmid Date: Fri, 30 Oct 2026 19:19:33 +0100 Subject: [PATCH] Questions: Create Unique Index Without MariaDB-Only Syntax CREATE INDEX IF NOT EXISTS is not supported by MySQL and breaks the installation (install-check-trunk-8.5). Use addUniqueConstraint() and check for an existing constraint via ilDBAnalyzer instead. --- .../src/Setup/OverarchingQuestionTables.php | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/components/ILIAS/Questions/src/Setup/OverarchingQuestionTables.php b/components/ILIAS/Questions/src/Setup/OverarchingQuestionTables.php index 82ce74a091e2..2077a5f440fa 100644 --- a/components/ILIAS/Questions/src/Setup/OverarchingQuestionTables.php +++ b/components/ILIAS/Questions/src/Setup/OverarchingQuestionTables.php @@ -363,10 +363,14 @@ public function step_7(): void ); } - $this->db->manipulate( - "CREATE UNIQUE INDEX IF NOT EXISTS apc_idx ON {$table_name}" . PHP_EOL - . '(`answer_form_id`, `parent_id`, `condition`)' - ); + $unique_fields = ['answer_form_id', 'parent_id', 'condition']; + $unique_constraint_exists = array_filter( + (new \ilDBAnalyzer($this->db))->getConstraintsInformation($table_name), + static fn(array $constraint): bool => array_keys($constraint['fields']) === $unique_fields + ) !== []; + if (!$unique_constraint_exists) { + $this->db->addUniqueConstraint($table_name, $unique_fields, 'apc'); + } } public function step_8(): void