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

Argumentos para mysql.exe

Estas en el tema de Argumentos para mysql.exe en el foro de Mysql en Foros del Web. Gente, pasaron horas y no puedo hacer funcionar bien este proceso, me parece que tengo mal los argumentos porque me abre la ventana de la ...
  #1 (permalink)  
Antiguo 14/02/2010, 18:24
Avatar de Frehley  
Fecha de Ingreso: junio-2005
Ubicación: Somewhere between Heaven and Hell
Mensajes: 415
Antigüedad: 18 años, 10 meses
Puntos: 0
Pregunta Argumentos para mysql.exe

Gente, pasaron horas y no puedo hacer funcionar bien este proceso, me parece que tengo mal los argumentos porque me abre la ventana de la consola de commandos pero me la cierra rapido.

Código PHP:
 Clave txtClave.Text
        Database 
txtDatabase.Text
        Host 
txtHost.Text
        Puerto 
txtPuerto.Text
        User 
txtUser.Text

        Dim back 
As String Application.StartupPath "\backup_20100213093056.sql"
        
Dim mysqlll As String Environment.GetFolderPath(Environment.SpecialFolder.ProgramFiles) & "\MySQL\MySQL Server 5.0\bin\mysql.exe"

        
Process.Start(mysqlll"--host=" Host " --user=" User " --pasword=" Clave " " Database " -r " back)

        
MsgBox("la base de datos ha sido creada"
Pregunté en un foro de .Net y me dijeron que pregunte en uno de MySQL... así que nada, lo estoy haciendo. Si alguien me diera una mano les digo que me harían la semana!

Muchas gracias!
__________________
diegoz.com.ar
  #2 (permalink)  
Antiguo 14/02/2010, 19:08
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: Argumentos para mysql.exe

El problema tiene dos partes:

A nivel de VB.Net, estás mandando a abrir un proceso D.O.S., por lo cual, cuando el proceso termina de ejecutarse, simplemente se cierra la ventana. Para evitarlo deberías crear el proceso de diferente forma. Esto te lo puedo postear en el foro de .Net si lo deseas.

A nivel de MySQL, el problema es que estás tratando de recuperar un backup creado con mysqldump.exe directamente sobre el servidor de MySQL, sin crear la base de datos, ya que cuando has hecho backup de una sola base con mysqldump éste no agrega la opción de crear la base. Para que el proceso funcione bien, debes crear la base primero y luego volcar todo sobre ella.
Solamente si has realizado el backup con el parámetro -B o -databases, el archivo incuirá la creación de la base.

Además, estás cometiendo un error grave al usar un parámetro -r, ya que en el intérprete de comandos mysql.exe, esto significa "Muestra los valores de las columnas sin conversión de escape. Se usa a menudo con la opción" y no "Redirige la salida a un fichero dado. ", como en mysqldump.exe...

En definitiva, el comando, escrito completo debería quedar:

Cita:
rutaProgramFiles\MySQL\MySQL Server 5.0\bin\mysql.exe -user=usuario -password=clave nombreBase < archhivobackup.ext
Siendo rutaProgramFiles la dirección de los Archivos de programa del sistema, nombreBase el nombre de la base creada y archhivobackup.ext el archivo que estás intentando recuperar.
__________________
¿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 14/02/2010, 20:33
Avatar de Frehley  
Fecha de Ingreso: junio-2005
Ubicación: Somewhere between Heaven and Hell
Mensajes: 415
Antigüedad: 18 años, 10 meses
Puntos: 0
Respuesta: Argumentos para mysql.exe

Hola, no ejecutaba la consulta directamente sobre el servidor, antes creaba la DB pero de otra manera, igualmente de la forma que dijiste vos me parece mas práctico así que desde ahora lo voy a hacer así.

El proceso ahora lo ejecuto así, pero sigue igual, busco y no encuentro la diferencia con el que me pasaste... debo estar cansando...

Cita:
Process.Start(mysqlll, "-host=" & Host & " -user=" & User & " -pasword=" & Clave & " " & Database & " < " & back)
Muchas gracias!
__________________
diegoz.com.ar
  #4 (permalink)  
Antiguo 14/02/2010, 21:00
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: Argumentos para mysql.exe

Perdón, a veces me olvido de los detalles de los parámetros. Cuando se poe todo el nombre van con "--" y no con "-".
Código vb.net:
Ver original
  1. Process.Start(mysqlll, "--host=" & Host & " --user=" & User & " --pasword=" & Clave & " " & Database & " < " & back)
__________________
¿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 14/02/2010, 21:28
Avatar de Frehley  
Fecha de Ingreso: junio-2005
Ubicación: Somewhere between Heaven and Hell
Mensajes: 415
Antigüedad: 18 años, 10 meses
Puntos: 0
Respuesta: Argumentos para mysql.exe

No hay caso, sigo en lo mismo. Sé que no es un problema del .sql porque desde el sqlyog me lo levanta bien. Dejo la linea de codigo a ver si alguien le encuentra el problema.
Los datos que le paso estoy seguro que son los correctos.

Cita:
Process.Start(mysqlll, "--host=" & Host & " --user=" & User & " --pasword=" & Clave & " " & Database & " < " & back)
Muchas gracias!
__________________
diegoz.com.ar
  #6 (permalink)  
Antiguo 14/02/2010, 22:34
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: Argumentos para mysql.exe

Entonces realiza la prueba bruta: Toma el string completo de la sentencia y ejecútalo en una ventana de símbolo de sistema.
AL menos, como allí no se cerrará la ventana, podrás ver cuál es el error que devuelve...

Hay algunos tipos de error que produce el mysqldump.exe bajo ciertas circunstancias, que pueden generar problemas que no se detectan vía aplicación...
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #7 (permalink)  
Antiguo 15/02/2010, 00:54
Avatar de Frehley  
Fecha de Ingreso: junio-2005
Ubicación: Somewhere between Heaven and Hell
Mensajes: 415
Antigüedad: 18 años, 10 meses
Puntos: 0
Respuesta: Argumentos para mysql.exe

Bueno, en el simbolo de sistema funciona, pero le tube que cambiar algunas cosas.
Para empezar password, le faltaba una S... juaz! Ademas le tube que quitar el argumento del nombre de la base de datos, debe ser porque el .sql tiene la instruccion para crearla.

Ahora estoy viendo por que desde mi sistema todavia no funciona... pero bueno, fue un paso adelante

C:\Users\Frehley>"C:\Program Files (x86)\MySQL\MySQL Server 5.0\bin\mysql.exe" --host=localhost --port=3306 --user=root --password=PASSWORD < "C:\Users\Frehley\Desktop\Control de Stock\Stock\backup.sql"


Cita:
Process.Start(mysqlll, " --host=" & Host & " --port=" & Puerto & " --user=" & User & " --password=" & Clave & " < " & back)
Muchas gracias!
__________________
diegoz.com.ar

Última edición por Frehley; 15/02/2010 a las 01:22
  #8 (permalink)  
Antiguo 16/02/2010, 07:05
Avatar de Frehley  
Fecha de Ingreso: junio-2005
Ubicación: Somewhere between Heaven and Hell
Mensajes: 415
Antigüedad: 18 años, 10 meses
Puntos: 0
Respuesta: Argumentos para mysql.exe

SSSSSIIIII!!!! POR FIN!!!!!!! Les dejo el codigo para el que lo necesite!

Código PHP:
        Clave txtClave.Text
        Database 
txtDatabase.Text
        Host 
txtHost.Text
        Puerto 
txtPuerto.Text
        User 
txtUser.Text

        Dim back 
As String Chr(34) & Application.StartupPath "\backup.sql" Chr(34)
        
Dim mysqlll As String Chr(34) & Chr(34) & Environment.GetFolderPath(Environment.SpecialFolder.ProgramFiles) & "\MySQL\MySQL Server 5.0\bin\mysql.exe" Chr(34)
        
Dim xx As String mysqlll " --host=" Host " --port=" Puerto " --user=" User " --password=" Clave " < " back


        Dim Command 
As New Process 'Creamos la instancia Process
        Command.StartInfo.FileName = "cmd.exe" '
El proceso en si es el CMD 
        Command
.StartInfo.Arguments " /c " xx 'Aqui le damos los parametros /c y el nombre del archivo a ejecutar

        Command.StartInfo.RedirectStandardError = True '
Redirigimos los errores
        Command
.StartInfo.RedirectStandardOutput True 'Redirigimos la salida
        Command.StartInfo.UseShellExecute = False '
Para redirigir la salida de este proceso esta propiedad debe ser false
        Command
.StartInfo.CreateNoWindow True 'Para que no abra la ventana del CMD

        Try
            Command.Start()
            Dim Output As String = Command.StandardOutput.ReadToEnd() _
        & vbCrLf & Command.StandardError.ReadToEnd() '
Guardamos las salidas en un string
            TextBoxX1
.Text ""
            
TextBoxX1.Text Output 'Desplegamos la salida en nuestro RichTextBox
            MsgBox("la base de datos ha sido creada")
        Catch ex As Exception
            MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error)
            '
En caso de cualquier error de ejecucion
        End 
Try 
Salu2 y muchas gracias!!
__________________
diegoz.com.ar
  #9 (permalink)  
Antiguo 16/02/2010, 07:10
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: Argumentos para mysql.exe

Exacto. Ese es el proceso que te mencionaba en el post numero 2, y que no podía poner aquí porque en el foro de Bases de Datos no se debe poner código de programación.
Me alegra que lo solucionaras.

__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Etiquetas: argumentos
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.