From aab0a19d1c67cc965150adba9bdc7eeaa9d9237d Mon Sep 17 00:00:00 2001 From: Nils-Johan Gynther Date: Sat, 2 May 2026 19:22:53 +0200 Subject: [PATCH] fix(prisma): make owner FK migration resilient on MariaDB --- .../migration.sql | 24 ++++++++++++++++--- 1 file changed, 21 insertions(+), 3 deletions(-) diff --git a/backend/prisma/migrations/20260502160000_product_owner_required/migration.sql b/backend/prisma/migrations/20260502160000_product_owner_required/migration.sql index 0998b1a2..f56c7c23 100644 --- a/backend/prisma/migrations/20260502160000_product_owner_required/migration.sql +++ b/backend/prisma/migrations/20260502160000_product_owner_required/migration.sql @@ -14,9 +14,27 @@ DELETE FROM `Product` WHERE `ownerId` IS NULL; ALTER TABLE `Product` MODIFY COLUMN `ownerId` INT NOT NULL; --- Steg 4: Uppdatera foreign key constraint till CASCADE (ta bort gammal, lägg till ny) -ALTER TABLE `Product` - DROP FOREIGN KEY IF EXISTS `Product_ownerId_fkey`; +-- Steg 4: Uppdatera foreign key constraint till CASCADE +-- Droppa befintlig FK på ownerId med dynamiskt namn (miljöer kan skilja sig). +SET @fk_name := ( + SELECT kcu.CONSTRAINT_NAME + FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE kcu + WHERE kcu.TABLE_SCHEMA = DATABASE() + AND kcu.TABLE_NAME = 'Product' + AND kcu.COLUMN_NAME = 'ownerId' + AND kcu.REFERENCED_TABLE_NAME = 'User' + LIMIT 1 +); + +SET @drop_fk_sql := IF( + @fk_name IS NULL, + 'SELECT 1', + CONCAT('ALTER TABLE `Product` DROP FOREIGN KEY `', @fk_name, '`') +); + +PREPARE stmt_drop_fk FROM @drop_fk_sql; +EXECUTE stmt_drop_fk; +DEALLOCATE PREPARE stmt_drop_fk; ALTER TABLE `Product` ADD CONSTRAINT `Product_ownerId_fkey`