X-Git-Url: https://delta.frontaccounting.com/gitweb/?a=blobdiff_plain;f=admin%2Fdb%2Fmaintenance_db.inc;h=c9e07c57ad2d7f059075b8b66dcd6f19fe30d699;hb=7b429726b63cd0ad02c5bd32a344e2764758e31a;hp=2823ed7c61b3222203e14f628bff5a99044655b1;hpb=1c1d6b39a0425ae2d6ae8cc98490027b7810c37d;p=fa-stable.git diff --git a/admin/db/maintenance_db.inc b/admin/db/maintenance_db.inc index 2823ed7c..c9e07c57 100644 --- a/admin/db/maintenance_db.inc +++ b/admin/db/maintenance_db.inc @@ -18,6 +18,8 @@ * @param $strSortType String containing either asc or desc [default to asc] * @desc Naturally sorts an array using by the column $strSortBy */ +define('EXPORT_MAX_INSERT', 50000); + function array_natsort($aryData, $strIndex, $strSortBy, $strSortType=false) { // if the parameters are invalid @@ -178,7 +180,7 @@ function update_extensions($extensions) { } // update per company files - $cnt = count($db_connections); + $cnt = max(1, count($db_connections)); for($i = 0; $i < $cnt; $i++) { $newexts = $extensions; @@ -253,7 +255,9 @@ function write_lang() function db_import($filename, $connection, $force=true) { - global $db, $go_debug; + global $db, $go_debug, $sql_trail; + + $sql_trail = false; $allowed_commands = array( "create" => 'table_queries', @@ -375,7 +379,7 @@ function db_import($filename, $connection, $force=true) } } } - + db_query("SET foreign_key_checks=1"); if ($delimiter != ';') db_query("delimiter ;"); // just for any case @@ -553,12 +557,12 @@ function db_export($conn, $filename, $zip='no', $comment='', $tbpref = TB_PREF, // if ($auto_incr[$tablename]) // $out.=" AUTO_INCREMENT=".$auto_incr[$tablename]; $out.=" ;"; - $out.="\n\n\n"; + $out.="\n\n"; // export data if (!$error) { - $out.="### Data of table `".$tablename."` ###\n\n"; + $out.="### Data of table `".$tablename."` ###\n"; // check if field types are NULL or NOT NULL $res3 = db_query("SHOW COLUMNS FROM `" . $tablename . "`"); @@ -571,18 +575,40 @@ function db_export($conn, $filename, $zip='no', $comment='', $tbpref = TB_PREF, } $res2 = db_query("SELECT * FROM `" . $tablename . "`"); + $maxinsert = 0; + $insert = ''; for ($j = 0; $j < db_num_rows($res2); $j++) { - $out .= "INSERT INTO `" . $tablename . "` VALUES ("; $row2 = db_fetch_row($res2); - // run through each field + $values = '('; for ($k = 0; $k < $nf = db_num_fields($res2); $k++) { - $out .= db_escape($row2[$k], $field_null[$k]); + $values .= db_escape($row2[$k], $field_null[$k]); if ($k < ($nf - 1)) - $out .= ", "; + $values .= ', '; + } + $values .= ')'; + $len = strlen($values); + if ($maxinsert < $len+1) + { + $maxinsert = EXPORT_MAX_INSERT; + if ($insert) + { + $out .= $insert .';'; // flush insert query + $insert = ''; + } + } + + if ($insert == '') + { + $insert = "\nINSERT INTO `" . $tablename . "` VALUES\n"; + $maxinsert -= strlen($insert); + } else { + $insert .= ",\n"; } - $out .= ");\n"; + + $maxinsert -= $len; + $insert .= $values; // if saving is successful, then empty $out, else set error flag if (strlen($out) > $max_size && $zip != "zip") @@ -593,7 +619,8 @@ function db_export($conn, $filename, $zip='no', $comment='', $tbpref = TB_PREF, $error = true; } } - + if ($insert) + $out .= $insert. ';'; // an error occurred! Try to delete file and return error status } elseif ($error)