CRM-12458
authoryashodha <yashodha.chaku@webaccess.co.in>
Wed, 8 May 2013 21:13:15 +0000 (02:43 +0530)
committeryashodha <yashodha.chaku@webaccess.co.in>
Wed, 8 May 2013 21:27:05 +0000 (02:57 +0530)
CRM/Core/DAO.php
CRM/Upgrade/Incremental/php/FourThree.php

index 6ba99787805b770aaedce9e250900e9e33391633..15fa9cfd6ae56d6774fe5da20bd3575fa47181dd 100644 (file)
@@ -589,18 +589,17 @@ LIKE %1
     static $show = array();
 
     if (!array_key_exists($tableName, $show)) {
-      $query = "SHOW CREATE TABLE $tableName";
-      $dao = CRM_Core_DAO::executeQuery($query);
+      $query = "SELECT CONSTRAINT_NAME FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS WHERE TABLE_NAME = %1";
+      $params = array( 1 => array($tableName, 'String'));
+      $dao = CRM_Core_DAO::executeQuery($query, $params);
 
-      if (!$dao->fetch()) {
-        CRM_Core_Error::fatal();
+      while ($dao->fetch()) {
+        $show[$tableName][] = $dao->CONSTRAINT_NAME;
       }
-
       $dao->free();
-      $show[$tableName] = $dao->Create_Table;
     }
 
-    return preg_match("/\b$constraint\b/i", $show[$tableName]) ? TRUE : FALSE;
+    return in_array($constraint, $show[$tableName]) ? TRUE : FALSE;
   }
 
   /**
index 331ada14157b94df074089418c6e286b93396a55..a1d1a20a8c6e0e1f8c8c903286ba44c9b5cd983a 100644 (file)
@@ -769,8 +769,8 @@ AND TABLE_SCHEMA = %1
         $foreignKeyExists = CRM_Core_DAO::checkConstraintExists($value['tableName'], $value['fkey']);
         $fKey = $value['fkey'];
       } else {
-        $foreignKeyExists = CRM_Core_DAO::checkFKConstraintInFormat($value['tableName'], $columnName);
         $fKey = "`FK_{$value['tableName']}_{$columnName}`";
+        $foreignKeyExists = CRM_Core_DAO::checkConstraintExists($value['tableName'], $fKey);
       }
       if ($foreignKeyExists || $value['tableName'] == 'civicrm_financial_trxn') {
         if ($value['tableName'] != 'civicrm_contribution_recur' || ($value['tableName'] == 'civicrm_contribution_recur' && $dao->N)) {