Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > MySQL
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 01-03-2017
emeritos emeritos is offline
Miembro
 
Registrado: may 2003
Posts: 307
Poder: 21
emeritos Va por buen camino
restaurar B.D. con mysql

Hola dilferos.

He realizado con esta sentencia una copia de seguridad de mi dase de datos:
Código Delphi [-]
   operacion:='open';
   nombre:='mysqldump.exe';
   parametro:='--skip-opt --compact --user=xxx --password=xxx bd --result-file="C:\xxx\respaldo.sql"';
   path:='C:\xxx\';
   shellexecute(handle,pchar(operacion),pchar(nombre),pchar(parametro),pchar(path),sw_shownormal);

y me sale bien (supongo) por que a la hora de restaurarla con mysql administrator me dice que errorm porque no ha sido creada con ella.

Pero la cuestion es que al restaurarla con esta sentencia:
Código Delphi [-]
   operacion:='open';
   nombre:='mysql.exe';
   parametro:='--user=xxx --password=xxx bd < c:\xxx\respaldo.sql';
   path:='C:\xxx\';
   shellexecute(handle,pchar(operacion),pchar(nombre),pchar(parametro),pchar(path),sw_shownormal);

no sale nada y si lo realizo a traves del cmd.exe me dice que ya existe la tabla en cuestion (que es la primera que esta en la bd), es decir, que no la copia porque ya existe.

¿Existe algunos parametros en mysql para que no diga esto y lo copie?
Responder Con Cita
  #2  
Antiguo 01-03-2017
emeritos emeritos is offline
Miembro
 
Registrado: may 2003
Posts: 307
Poder: 21
emeritos Va por buen camino
ejecutar mysql para restaurar

Hola dilferos:
He realizado una copia de seguridad de mi db con mysqldump (delphi7)

Código Delphi [-]
    operacion:='open';
    nombre:='mysqldump.exe';
    parametro:='--opt --add-drop-table --user=beni --password=penco --databases beni --result-file="C:\beni\respaldoBOP.sql"';
    path:='C:\beni\';
    shellexecute(handle,pchar(operacion),pchar(nombre),pchar(parametro),pchar(path),sw_shownormal);

Ha salido todo bien de momento.Per a la hora de restaurarla con mysql

Código Delphi [-]
    operacion:='open';
    nombre:='mysql.exe';
    parametro:='--user="beni" --password="penco" beni < "C:\beni\respaldo.sql"';
    path:='C:\beni\';
    shellexecute(handle,pchar(operacion),pchar(nombre),pchar(parametro),pchar(path),sw_shownormal);

Y lo unico que hace es sacarme por pantalla las opciones de mysql, incluso son las ".

A traves del teclado con cmd la misma sentencia lo realiza bien.

¿Por que y como solucionarlo ?

Gracias.
Responder Con Cita
  #3  
Antiguo 01-03-2017
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola emeritos.

Por favor no publiques temas con el mismo contenido bajo distintos títulos, eso multiplica los temas y los resultados en las búsquedas.
Combiné ambos temas bajo el primer título.

Saludos y gracias por tu colaboración
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #4  
Antiguo 01-03-2017
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Normalmente, mysqldump genera estas sentencias para cada tabla de la base de datos:

Código SQL [-]
DROP TABLE IF EXISTS `tabla`;
CREATE TABLE `tabla` (...);
INSERT INTO `tabla` VALUES (...),(...),...

Al poner la opción --skip-opt, mysqldump omite la sentencia DROP y por tanto, al restaurar falla al intentar crear una tabla ya existente. Desafortunadamente, aunque mysql cuenta con la sentencia

Código SQL [-]
CREATE TABLE IF NOT EXISTS `tabla` ...

mysqldump no la incluye. Así que, si vas a restaurar sobre una base ya existente, no coloques --skip-opt



Ahora, en MSDOS (y otros sistemas), en una línea como:

Código:
mysql.exe -uusuario -ppassword bd < respaldo.sql
respaldo.sql no es un parámetro del comando (como sí lo son -uusuario y -ppassword) sino una redirección de la entrada estándar; en lugar del teclado, la entrada se proporciona por un archivo de texto. Esto lo digo para indicarte que no puedes usar redirecciones así en ShellExecute, como lo estás intentando.

En este mensaje puedes ver una manera de usar ShellExecute y mysql.exe para restaurar un respaldo creado con mysqldump.

LineComment Saludos
Responder Con Cita
  #5  
Antiguo 01-03-2017
emeritos emeritos is offline
Miembro
 
Registrado: may 2003
Posts: 307
Poder: 21
emeritos Va por buen camino
muchas gracias.
Pero hay una cosa que no entiendo si pongo para restaurarla como ma indicado:

Código Delphi [-]
    operacion:='open';
    nombre:='mysql.exe';
    parametro:='-e "source \beni\respaldo.sql" bd
    path:='C:\beni\';
    shellexecute(handle,pchar(operacion),pchar(nombre),pchar(parametro),pchar(path),sw_shownormal);

asi deberia de funcionar supongo, pero donde se pone el usuario y el password de la b.d.


saludos.
Responder Con Cita
  #6  
Antiguo 01-03-2017
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Simplemente se lo añades a la variable parametro:

Código Delphi [-]
parametro := '-uusuario -ppassword -e "source \ruta\al\respaldo.sql" bd';

LineComment Saludos
Responder Con Cita
  #7  
Antiguo 02-03-2017
emeritos emeritos is offline
Miembro
 
Registrado: may 2003
Posts: 307
Poder: 21
emeritos Va por buen camino
Muchas gracias. Me ha servido para mucho, Me ha solucionado el problema.
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Restaurar Copia JUGUE Firebird e Interbase 3 16-09-2008 04:34:48
Restaurar StringGrid Aura OOP 4 12-11-2006 19:52:34
como puedo restaurar un archivo .sql a una base de datos en mysql por delphi Shidalis Varios 8 18-08-2005 22:24:14
Evitar restaurar Novás Varios 1 06-04-2004 00:57:47
restaurar las particiones barman Linux 5 13-02-2004 18:54:21


La franja horaria es GMT +2. Ahora son las 10:02:03.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi