From 386c7df5d2248e33883d701b5912f5943e5f75fb Mon Sep 17 00:00:00 2001 From: Jared Hancock <jared@osticket.com> Date: Tue, 11 Aug 2015 21:08:07 -0500 Subject: [PATCH] cdata: Avoid possible replication crash Use `if not exists` in the create statement for the %cdata table so that, in some race conditions, a MySQL slave would not be crashed because of an already-existing table. --- include/class.dynamic_forms.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/include/class.dynamic_forms.php b/include/class.dynamic_forms.php index 7985e23a4..2118a96f5 100644 --- a/include/class.dynamic_forms.php +++ b/include/class.dynamic_forms.php @@ -288,7 +288,7 @@ class DynamicForm extends VerySimpleModel { } static function buildDynamicDataView($cdata) { - $sql = 'CREATE TABLE `'.$cdata['table'].'` (PRIMARY KEY + $sql = 'CREATE TABLE IF NOT EXISTS `'.$cdata['table'].'` (PRIMARY KEY ('.$cdata['object_id'].')) DEFAULT CHARSET=utf8 AS ' . static::getCrossTabQuery( $cdata['object_type'], $cdata['object_id']); db_query($sql); @@ -489,7 +489,7 @@ class TicketForm extends DynamicForm { // ans.entry_id = entry.id LEFT JOIN ost_form_field field ON // field.id=ans.field_id // where entry.object_type='T' group by entry.object_id; - $sql = 'CREATE TABLE `'.TABLE_PREFIX.'ticket__cdata` (PRIMARY KEY + $sql = 'CREATE TABLE IF NOT EXISTS `'.TABLE_PREFIX.'ticket__cdata` (PRIMARY KEY (ticket_id)) DEFAULT CHARSET=utf8 AS ' . static::getCrossTabQuery('T', 'ticket_id'); db_query($sql); -- GitLab