From 43ce064e7d2813809a803dd7c678f88dba0da6db Mon Sep 17 00:00:00 2001 From: conradverm Date: Tue, 6 Feb 2007 12:52:01 +0000 Subject: [PATCH] KTS-1533 "Issues when trying to introduce db constraints during upgrades" Fixed. Deleting broken references prior to applying constraints. Reviewed by: Kevin Fourie --- sql/mysql/upgrade/3.1.6.3/groups-integrity.sql | 31 ++++++++++++++++++++++++++++++- 1 file changed, 30 insertions(+), 1 deletion(-) diff --git a/sql/mysql/upgrade/3.1.6.3/groups-integrity.sql b/sql/mysql/upgrade/3.1.6.3/groups-integrity.sql index e7425d7..74ce68a 100644 --- a/sql/mysql/upgrade/3.1.6.3/groups-integrity.sql +++ b/sql/mysql/upgrade/3.1.6.3/groups-integrity.sql @@ -1,7 +1,36 @@ +-- PREPARE FOR ADDING CONSTRAINTS ON `groups_groups_link` + +-- parent_group_id + +DELETE FROM `groups_groups_link` as gg USING `groups_groups_link` as gg, groups_lookup + WHERE not exists(select 1 from `groups_lookup` as g where gg.parent_group_id = g.id); + +-- member_group_id + +DELETE FROM `groups_groups_link` as gg USING `groups_groups_link` as gg, groups_lookup + WHERE not exists(select 1 from `groups_lookup` as g where gg.member_group_id = g.id); + +-- ADD CONSTRAINT + ALTER TABLE `groups_groups_link` ADD CONSTRAINT `groups_groups_link_ibfk_1` FOREIGN KEY (`parent_group_id`) REFERENCES `groups_lookup` (`id`) ON DELETE CASCADE, ADD CONSTRAINT `groups_groups_link_ibfk_2` FOREIGN KEY (`member_group_id`) REFERENCES `groups_lookup` (`id`) ON DELETE CASCADE; - + +-- PREPARE FOR ADDING CONSTRAINTS ON `users_groups_link` + +-- group_id + +DELETE FROM `users_groups_link` as ug USING `users_groups_link` as ug, groups_lookup + WHERE not exists(select 1 from `groups_lookup` as g where ug.group_id = g.id); + +-- user_id + +DELETE FROM `users_groups_link` as ug USING `users_groups_link` as ug, users + WHERE not exists(select 1 from `users` as u where ug.user_id = u.id); + +-- ADD CONSTRAINT + ALTER TABLE `users_groups_link` ADD CONSTRAINT `users_groups_link_ibfk_1` FOREIGN KEY (`group_id`) REFERENCES `groups_lookup` (`id`) ON DELETE CASCADE, ADD CONSTRAINT `users_groups_link_ibfk_2` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`) ON DELETE CASCADE; + -- libgit2 0.21.4