From 64542f7ec7a28fd5785b36abd3b9b604109cb78a Mon Sep 17 00:00:00 2001 From: Pratik Joshi Date: Tue, 13 May 2014 17:03:26 +0530 Subject: [PATCH] upgrade-fix : droping foriegn key for pdf_format_id of msg_template table --- CRM/Upgrade/Incremental/php/FourFive.php | 24 +++++++++++++++++++ .../Incremental/sql/4.5.alpha1.mysql.tpl | 4 ---- 2 files changed, 24 insertions(+), 4 deletions(-) diff --git a/CRM/Upgrade/Incremental/php/FourFive.php b/CRM/Upgrade/Incremental/php/FourFive.php index 8d5bef7f17..00696221d2 100644 --- a/CRM/Upgrade/Incremental/php/FourFive.php +++ b/CRM/Upgrade/Incremental/php/FourFive.php @@ -75,6 +75,30 @@ class CRM_Upgrade_Incremental_php_FourFive { $this->addTask(ts('Set default for Individual name fields configuration'), 'addNameFieldOptions'); + // CRM-14522 - The below schema checking is done as foreign key name + // for pdf_format_id column varies for different databases + // if DB is been into upgrade for 3.4.2 version, it would have pdf_format_id name for FK + // else FK_civicrm_msg_template_pdf_format_id + $config = CRM_Core_Config::singleton(); + $dbUf = DB::parseDSN($config->dsn); + $query = " +SELECT CONSTRAINT_NAME FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS +WHERE TABLE_NAME = 'civicrm_msg_template' +AND CONSTRAINT_TYPE = 'FOREIGN KEY' +AND TABLE_SCHEMA = %1 +"; + $params = array(1 => array($dbUf['database'], 'String')); + $dao = CRM_Core_DAO::executeQuery($query, $params, TRUE, NULL, FALSE, FALSE); + if ($dao->fetch()) { + if ($dao->CONSTRAINT_NAME == 'FK_civicrm_msg_template_pdf_format_id' || + $dao->CONSTRAINT_NAME == 'pdf_format_id') { + $sqlDropFK = "ALTER TABLE `civicrm_msg_template` +DROP FOREIGN KEY `{$dao->CONSTRAINT_NAME}`, +DROP KEY `{$dao->CONSTRAINT_NAME}`"; + CRM_Core_DAO::executeQuery($sqlDropFK, CRM_Core_DAO::$_nullArray, TRUE, NULL, FALSE, FALSE); + } + } + return TRUE; } diff --git a/CRM/Upgrade/Incremental/sql/4.5.alpha1.mysql.tpl b/CRM/Upgrade/Incremental/sql/4.5.alpha1.mysql.tpl index 6316827abf..4ed8515fa6 100644 --- a/CRM/Upgrade/Incremental/sql/4.5.alpha1.mysql.tpl +++ b/CRM/Upgrade/Incremental/sql/4.5.alpha1.mysql.tpl @@ -288,10 +288,6 @@ ALTER TABLE `civicrm_option_group` UPDATE `civicrm_option_group` SET is_locked = 1 WHERE name IN ('contribution_status','activity_contacts','advanced_search_options','auto_renew_options','contact_autocomplete_options','batch_status','batch_type','batch_mode','contact_edit_options','contact_reference_options','contact_smart_group_display','contact_view_options','financial_item_status','mapping_type','pcp_status','user_dashboard_options','tag_used_for'); - --- CRM-14522 -ALTER TABLE `civicrm_msg_template` DROP FOREIGN KEY `FK_civicrm_msg_template_pdf_format_id`; - -- CRM-14449 CREATE TABLE IF NOT EXISTS `civicrm_system_log` ( `id` INT(11) NOT NULL AUTO_INCREMENT COMMENT 'Primary Key: ID.', -- 2.25.1