- // mysql profiling
- global $profile_sql;
- if (@$profile_sql)
- get_usec();
- $result = mysqli_query($db, $sql);
- if (@$profile_sql)
- {
- $profile_sql= false;
- _vd($sql.'<br>:'.db_num_rows($result).'rows, '.get_usec());
- }
-
- if($sql_trail) {
- $db_last_inserted_id = mysqli_insert_id($db); // preserve in case trail insert is done
- if ($select_trail || (strstr($sql, 'SELECT') === false)) {
- mysqli_query($db, "INSERT INTO ".$cur_prefix."sql_trail
- (`sql`, `result`, `msg`)
- VALUES(".db_escape($sql).",".($result ? 1 : 0).",
- ".db_escape($err_msg).")");
- }
- }
+ db_profile(); // mysql profiling
+
+ $retry = MAX_DEADLOCK_RETRY;
+ do {
+ $result = mysqli_query($db, $sql);
+ if (mysqli_errno($db) == 1213) { // deadlock detected
+ sleep(1); $retry--;
+ } else
+ $retry = 0;
+ } while ($retry);
+
+ if($SysPrefs->db_trail == 1)
+ $db_last_inserted_id = mysqli_insert_id($db); // cache to avoid trail overwrite