make upgrade rerunnable
authordemeritcowboy <demeritcowboy@hotmail.com>
Wed, 29 Mar 2023 00:27:54 +0000 (20:27 -0400)
committerdemeritcowboy <demeritcowboy@hotmail.com>
Wed, 29 Mar 2023 00:27:54 +0000 (20:27 -0400)
CRM/Upgrade/Incremental/php/FiveSixty.php

index 763a325d79dfac80ad608a0ce1ffb1bc0bd76817..6b9a4dedeab33c529ad944b1f3ec1b74c9995157 100644 (file)
@@ -57,16 +57,18 @@ class CRM_Upgrade_Incremental_php_FiveSixty extends CRM_Upgrade_Incremental_Base
 
     // Set job_id = NULL for any that don't have matching jobs (ie. job was deleted).
     $updateQuery = 'UPDATE civicrm_job_log job_log LEFT JOIN civicrm_job job ON job.id = job_log.id SET job_id = NULL WHERE job.id IS NULL';
-
     CRM_Core_DAO::executeQuery($updateQuery);
+
     // Add the foreign key
-    $sql = CRM_Core_BAO_SchemaHandler::buildForeignKeySQL([
-      'fk_table_name' => 'civicrm_job',
-      'fk_field_name' => 'id',
-      'name' => 'job_id',
-      'fk_attributes' => ' ON DELETE SET NULL',
-    ], "\n", " ADD ", 'civicrm_job_log');
-    CRM_Core_DAO::executeQuery("ALTER TABLE civicrm_job_log " . $sql, [], TRUE, NULL, FALSE, FALSE);
+    if (!CRM_Core_BAO_SchemaHandler::checkFKExists('civicrm_job_log', 'FK_civicrm_job_log_job_id')) {
+      $sql = CRM_Core_BAO_SchemaHandler::buildForeignKeySQL([
+        'fk_table_name' => 'civicrm_job',
+        'fk_field_name' => 'id',
+        'name' => 'job_id',
+        'fk_attributes' => ' ON DELETE SET NULL',
+      ], "\n", " ADD ", 'civicrm_job_log');
+      CRM_Core_DAO::executeQuery("ALTER TABLE civicrm_job_log " . $sql, [], TRUE, NULL, FALSE, FALSE);
+    }
     return TRUE;
   }