diff --git a/src/QUI/Bricks/Events.php b/src/QUI/Bricks/Events.php index b3c124e3cf3b3fb59fbb953911a4b18027e07d92..9e9425f3530f6fc3ce8a3fc887b88f6601e13215 100644 --- a/src/QUI/Bricks/Events.php +++ b/src/QUI/Bricks/Events.php @@ -225,6 +225,8 @@ public static function onPackageSetup(QUI\Package\Package $Package) // unique bricks cache patch $projects = QUI::getProjectManager()->getProjectList(); + $databaseName = QUI::getDataBase()->getAttribute('dbname'); + foreach ($projects as $Project) { $projectCacheTable = QUI::getDBProjectTableName( Manager::TABLE_CACHE, @@ -232,9 +234,19 @@ public static function onPackageSetup(QUI\Package\Package $Package) ); try { - QUI::getDataBase()->fetchSQL( - "`ALTER TABLE ``{$projectCacheTable}`` DROP PRIMARY KEY;`" - ); + $primaryExists = QUI::getDataBase()->fetchSQL(" + SELECT COUNT(constraint_type) AS primary_key_count FROM information_schema.table_constraints + WHERE constraint_type = 'PRIMARY KEY' + AND table_name = '{$projectCacheTable}' + AND TABLE_SCHEMA = '{$databaseName}' + "); + + $isPrimaryKeyExisting = \boolval($primaryExists[0]['primary_key_count']); + + // Primary key should only be dropped if it exists + if ($isPrimaryKeyExisting) { + QUI::getDataBase()->fetchSQL("ALTER TABLE `{$projectCacheTable}` DROP PRIMARY KEY;"); + } } catch (QUI\Exception $Exception) { QUI\System\Log::addInfo($Exception->getMessage()); }