Ver Mensaje Individual
  #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
Reputación: 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