15/04/2011, 15:43
|
| | | Fecha de Ingreso: diciembre-2010 Ubicación: Mas - aya
Mensajes: 65
Antigüedad: 14 años, 1 mes Puntos: 8 | |
Respuesta: Mejorando backup de mysql Hola nuevamente gildus he estado haciendo correcciones en el codigo fuente y pues encontre uno mas viable para hacer las mejoras repectivas Código PHP: <?php include("../conexion/conexion.php"); session_start(); /* Reconocimiento a Fran86 # | YoDumpeo! | por fran86 <[email protected]> Tomado de Forosdelweb.com*/ $fechaDeLaCopia = "-".date("d l-F-Y"); $ficheroDeLaCopia =$dbname.$fechaDeLaCopia.".sql"; $drop = true; $tablas = false; $compresion = false; $conexion = mysql_connect($servername,$dbusername,$dbpassword) or die(mysql_error()); @mysql_select_db($dbname,$conexion) or die("No se pudo seleccionar la Base de Datos: ". mysql_error()); if ( empty($tablas) ){ $consulta = "SHOW TABLES FROM $dbname;"; $respuesta = mysql_query($consulta, $conexion)or die("No se pudo ejecutar la consulta: ".mysql_error()); while ($fila = mysql_fetch_array($respuesta, MYSQL_NUM)) { $tablas[] = $fila[0];}} $info['fecha'] = date("d-m-Y"); $info['hora'] = date('h:m:s'); $info['mysqlver'] = mysql_get_server_info(); $info['phpver'] = phpversion(); ob_start(); print_r($tablas); $representacion = ob_get_contents(); ob_end_clean (); preg_match_all('/(\[\d+\] => .*)\n/', $representacion, $matches); $info['tablas'] = implode("; ", $matches[1]); $usuario=$_SESSION['nombreusuario']; $dump = <<<EOT #===================================================================== #--Generado el {$info['fecha']} a las {$info['hora']} por el usuario $usuario #--Servidor: {$_SERVER['HTTP_HOST']} #--MySQL Version: {$info['mysqlver']} #--PHP Version: {$info['phpver']} #=====================================================================
-- -- Base de datos: `$dbname ` --
EOT; foreach ($tablas as $tabla) { $sql = "SET FOREIGN_KEY_CHECKS=0"; $drop_table_query = ""; $create_table_query = ""; $insert_into_query = ""; if ($drop) { $drop_table_query = "DROP TABLE IF EXISTS `$tabla`;"; } else { $drop_table_query = "# No especificado."; } $create_table_query = ""; $consulta="SHOW CREATE TABLE $tabla;"; $respuesta = mysql_query($consulta, $conexion) or die("No se pudo ejecutar la consulta: ".mysql_error()); while ($fila = mysql_fetch_array($respuesta, MYSQL_NUM)) { $create_table_query = $fila[1].";"; } //Fin de $create_table_query $insert_into_query = ""; $consulta = "SELECT * FROM $tabla;"; $respuesta = mysql_query($consulta, $conexion) or die("No se pudo ejecutar la consulta: ".mysql_error()); while ($fila = mysql_fetch_array($respuesta, MYSQL_ASSOC)) { $columnas = array_keys($fila); foreach ($columnas as $columna) { if ( gettype($fila[$columna]) == "NULL" ) { $values[] = "NULL"; } else { $values[] = "'".mysql_real_escape_string($fila[$columna])."'"; } } $insert_into_query .= "INSERT INTO `$tabla` VALUES (".implode(", ", $values).");\n"; unset($values); } //Fin de $insert_into_query $sql = "SET FOREIGN_KEY_CHECKS=1"; $dump .= <<<EOT
-- -- Estructura de tabla para la tabla `$tabla` -- $drop_table_query $create_table_query
-- -- Volcar la base de datos para la tabla `$tabla` -- $insert_into_query
EOT;
}
/* Envio */ if ( !headers_sent() ) { header("Pragma: no-cache"); header("Expires: 0"); header("Content-Transfer-Encoding: binary"); switch ($compresion) { case "gz": header("Content-Disposition: attachment; filename=$nombre.gz"); header("Content-type: application/x-gzip"); echo gzencode($dump, 9); break; case "bz2": header("Content-Disposition: attachment; filename=$nombre.bz2"); header("Content-type: application/x-bzip2"); echo bzcompress($dump, 9); break; default: header('Content-Disposition: attachment; filename="'.$ficheroDeLaCopia.'"'); header("Content-type: application/force-download"); echo $dump; } } else { echo "<b>ATENCION: Probablemente ha ocurrido un error</b><br />\n<pre>\n$dump\n</pre>"; }
?> el caso seria ver mostrar las los alter table...he probado con las opciones que me diste pero solo me arroja la clave primaria |