Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

Problema al restaurar una BD creada con YoDumpeo 1.5 desde PHP

Estas en el tema de Problema al restaurar una BD creada con YoDumpeo 1.5 desde PHP en el foro de Mysql en Foros del Web. Mi problema es el siguiente: tengo una BD en MYSQL y estoy usando el script YoDumpeo para exportarla a un fichero .sql, que posteriormente comprimo ...
  #1 (permalink)  
Antiguo 25/11/2010, 06:29
 
Fecha de Ingreso: noviembre-2010
Ubicación: España
Mensajes: 5
Antigüedad: 14 años
Puntos: 0
Pregunta Problema al restaurar una BD creada con YoDumpeo 1.5 desde PHP

Mi problema es el siguiente: tengo una BD en MYSQL y estoy usando el script YoDumpeo para exportarla a un fichero .sql, que posteriormente comprimo con el zip que trae php. El archivo se genera correctamente, y si desde phpmyadmin lo importo funciona de maravilla. El problema está en que cuando lo intento hacer desde php da error de sintaxis:

"You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'CREATE TABLE..."

tiene pinta de tener que ver con el juego de caracteres o algo así...este es el script para rescatar:

Código PHP:
<? // Comprobación de autenticación.
if(!isset($_COOKIE['gestiona_adm']))
    
header("Location: ../login.php");

include_once(
"../config.php");

// Formateamos el directorio de copias de seguridad si existe, si no lo creamos.
if(is_dir("../copiaSeg"))
{
    
rmdir_recursivo("../copiaSeg");
}
else
{
    
mkdir("../copiaSeg");
}

// Rescatamos el fichero.
$origen $_FILES['rutaFichero']['tmp_name'];
$destino $GB_ABSOLUTE_PATH."/copiaSeg/bd_gestiona.zip";    
move_uploaded_file($origen$destino);

// Lo descomprimimos.
echo ">> Descomprimiendo el fichero...<br/>";
$zip = new ZipArchive;
if (
$zip->open($destino) === TRUE)
{
    
$zip->extractTo($GB_ABSOLUTE_PATH."/copiaSeg/");
    
$zip->close();
    echo 
">> Descompresión finalizada con éxito.<br/><br/>";
    
// Borramos el ZIP.
    
unlink($destino) or die(">> Se produjo un error mientras se limpiaba el directorio.");
}
else
{
    echo 
">> Se produjo un error mientras se descomprimía el fichero.<br/>";
    die(
">> Asegurese de que el fichero se creó con el software Gestiona.<br/>");
}

echo 
">> Se inició el proceso de restauración. Tenga paciencia, el proceso puede llevarle unos minutos...<br /><br />";
$link Conectarse();

// Abrimos el directorio para ver el nombre del fichero.
if ($gestor opendir($GB_ABSOLUTE_PATH."/copiaSeg/"))
{
    while (
false !== ($archivo readdir($gestor)))
    {
        
$seccion explode("."$archivo);
        if(
$seccion[1] == "sql")
        {
            
$handle = @fopen($GB_ABSOLUTE_PATH."/copiaSeg/".$archivo"r");
            if (
$handle)
            {
                
$consulta "";    
                while((
$buffer fgets($handle)) !== false)
                {
                    if(
$buffer[0] != "#")
                    {
                        
$consulta.=$cadena;
                    }
                }
                    
                if (!
feof($handle))
                    die(
">> Se produjo un error mientras se leía el fichero sql.<br />");
                
                
fclose($handle);
                
                
// Limpiamos la cadena de saltos de linea y espacios innecesarios.
                
echo "$consulta";
                
mysql_query($consulta$link)or
                    die(
">> Se produjo un error en la importación de la base de datos: ".mysql_error());
            }
            else
                echo 
">> Se produjo un error mientras se abría el fichero sql.<br />";
        }
        else
            echo 
$seccion[1];
    }
    
closedir($gestor);
}
    
echo 
"El proceso de restauración se completó con éxito.";

?>
PD: soy nuevo en los foros, lo siento si he creado temas repetidos o algo de eso, la verdad es que aun no entiendo bien esto d los foros. Mil gracias
  #2 (permalink)  
Antiguo 25/11/2010, 08:04
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: Problema al restaurar una BD creada con YoDumpeo 1.5 desde PHP

Cita:
PD: soy nuevo en los foros, lo siento si he creado temas repetidos o algo de eso, la verdad es que aun no entiendo bien esto d los foros. Mil gracias
En realidad no hay ningún misterio sobre las reglas. Simplemente lee las Políticas de Foros del Web y procura cumplirlas.

Respecto a los posts, la regla es evidente: SI pusiste un post en un subforo, no pongas el mismo mensaje en otro subforo...
No solamente te será difícil seguir las respuestas de cada uno, sino que puede darse que la respuesta correcta jamás la veas porque te olvidaste dónde posteaste, o bien a alguien le resulte fastidioso ver que ni te molestas en leer lo que te sugiere en alguno de ellos... etc.

Postea una pregunta una sola vez, y en un sólo foro. Cuando mucho luego se lo puede trasladara a otro más adecuado.


Cita:
"You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'CREATE TABLE..."

tiene pinta de tener que ver con el juego de caracteres o algo así...este es el script para rescatar:
En realidad tiene pinta de lo que te dice el mensaje: Hay un error de sintaxis en el o cerca del "CREATE TABLE...", pero como el código que posteas no tienen nada que ver con ese problema (esa sentencia no está contenida en ninguna parte del script), no hay modo de ayudarte, a menos que postees la sentencia que se estaba ejecutando cuando MySQL devolvió el error.

Saludos.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 26/11/2010, 02:50
 
Fecha de Ingreso: noviembre-2010
Ubicación: España
Mensajes: 5
Antigüedad: 14 años
Puntos: 0
Sonrisa Respuesta: Problema al restaurar una BD creada con YoDumpeo 1.5 desde PHP

Vaya, mis sinceras disculpas, uso firefox 3.6.12 y al enviar el post la página quedó en blanco, pensé que no habia envíado la información y pulsé actualizar. Entonces la web me informó de que estaba repitiendo el mensaje, no ha sido intencionado, lo siento. Con respecto al código que genera el fichero, lo copio aquí:

Código:
# +=======================
# | Generado el 26-11-2010 a las 09:11:07 AM
# | Servidor: localhost
# | MySQL Version: 5.1.33-community
# | PHP Version: 5.2.9
# | Base de datos: 'gestiona'
# | Usuario: 'emece'
# | Sucursal: 'Emecé Moda'
# +---------------------------------------
 
# | Vaciado de tabla 'arqueos'
# +------------------------------------->
DROP TABLE IF EXISTS `arqueos`;
 

# | Estructura de la tabla 'arqueos'
# +------------------------------------->
CREATE TABLE `arqueos` (
  `arq_fecha` date NOT NULL,
  `arq_efectivo` double NOT NULL DEFAULT '0',
  `arq_tarjeta` double NOT NULL DEFAULT '0',
  `arq_cheque` double NOT NULL DEFAULT '0',
  `arq_vale` double NOT NULL DEFAULT '0',
  PRIMARY KEY (`arq_fecha`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
 

# | Carga de datos de la tabla 'arqueos'
# +------------------------------------->
INSERT INTO `arqueos` VALUES ('2000-01-01', '0', '0', '0', '0');
INSERT INTO `arqueos` VALUES ('2010-10-08', '0', '0', '0', '0');
INSERT INTO `arqueos` VALUES ('2010-10-13', '2.46', '-0.14', '93.48', '0');
INSERT INTO `arqueos` VALUES ('2010-11-03', '-139.06', '-49.16', '181.64', '0');
...
Error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'CREATE TABLE `arqueos` ( `arq_fecha` date NOT NULL, `arq_efectivo` double NOT ' at line 18

Como podeis comprobar arriba simplemente estoy añadiendo a un string las consultas una tras otra con un fgets. Imaginé que el problema se hallaba en el primer código que subí porque como ya comenté al importar el fichero sql con phpmyadmin funciona a la perfección. De donde deduzco que el fallo está en mi programación.

También he probado a eliminar los caracteres 10 y 13 (probablemente saltos de linea, pues aparecen al final de las mismas), dividir con explode en los ';' y ejecutar las consultas una a una, pero tampoco funciona.

¿Podeis ayudarme?

PD: ¿podrías indicarme donde he repetido el tema?, me gustaría eliminarlo. Gracias

Última edición por jacobin84; 26/11/2010 a las 03:34
  #4 (permalink)  
Antiguo 26/11/2010, 04:20
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: Problema al restaurar una BD creada con YoDumpeo 1.5 desde PHP

Cita:
Como podeis comprobar arriba simplemente estoy añadiendo a un string las consultas una tras otra con un fgets. Imaginé que el problema se hallaba en el primer código que subí porque como ya comenté al importar el fichero sql con phpmyadmin funciona a la perfección. De donde deduzco que el fallo está en mi programación.
Si lo que tienes es un script de backup como archivo .SQL, lo mejor que puedes hacer es usarlo tal y como está. Para eso existe.
En sí, ese script no contiene errores de sintaxis, ya que si lo uso (lo hice) para ejecutarlo como script, funciona bien. El problema debe estar en otro nivel.
"Quebrarlo" en sus diferentes sentencias no es funcional (una vez lo intenté), porque los scripts de ese tipo suelen contener sentencias que sólo operan adecuadamente si están en ellos, y no cuando los envías con una aplicación separadamente. Además, al usar un caracter específico cuando lo separas corres el riesgo de cometer errores si ese mismo caracter es parte del contenido de algún campo, o bien está siendo usado en alguna otra parte.

Para ver si funciona tu aplicación debería tomarlo tal y como está y subirlo al servidor cono un solo envio. PhpMyAdmin lo que hace es subirlo al servidor y luego cargarlo directamente.

Intenta hacer lo mismo.

Respecto al código que posteaste antes, esa parte excede los límites de este foro. Los temas de programación se tratan en sus foros respectivos. En tu caso lo que debes hacer es plantear el problema del PHP en el Foro de PHP.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #5 (permalink)  
Antiguo 26/11/2010, 04:37
 
Fecha de Ingreso: noviembre-2010
Ubicación: España
Mensajes: 5
Antigüedad: 14 años
Puntos: 0
De acuerdo Respuesta: Problema al restaurar una BD creada con YoDumpeo 1.5 desde PHP

Deacuerdo, ya planteé el problema en el foro php, lo puse aqui porque estaba dudoso de la naturaleza del problema.
Lo que no se es como cerrar este tema, ni si puedo hacerlo yo, jeje.


Muchas gracias por la aportación, un saludo

Última edición por jacobin84; 26/11/2010 a las 04:58

Etiquetas: dump, importar, php, yodumpeo
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 16:35.