Archivo .BAT no funciona

Archivo .BAT no funciona

Postby JoseAlvarez » Wed Sep 27, 2023 9:57 am

Estimados amigos, espero que estén muy bien.

En esta oportunidad, acudo al foro ante el extraño caso que se me presenta al momento de ejecutar un archivo .BAT

Trataré de explicarme lo mejor y más corto posible para no confundirlos.

Mi aplicación realiza tanto el respaldo como la restauración de las bases de datos MariaDB desde una opción del menu.
En el .PRG donde esto se hace, se crean y ejecutan en segundo plano, los respectivos archivos .BAT (desde código fuente) los cuales a través de comandos de consola, hacen respaldo y restauración.

Los respaldos de las bases de datos se siguen ejecutando sin ningún problema. Pero en la restauración se me presenta ahora lo siguiente:

Al querer ejecutar el .BAT, ocurre que el sistema operativo hace dos cosas, inserta en mitad de la instrucción un numero CERO y corta la ultima parte de la instrucción.
Me explcio mejor.

La orden es esta:

mysql -u vdbnr8ds_backup -prestaurardb <c:\Cuentas32\Backup\2023-09-26-H17-M18-Cuentas32BD.sql vdbnr8ds_cuentas32_demo

Si la copio del .BAT y la pego en el prompt en la carpeta de C:\Program Files\MariaDB 11.2\bin y la ejecuto, restaura perfectamente los datos.

Pero si lo hago usando el .BAT, o sea C:\Program Files\MariaDB 11.2\bin\archivo.bat -> enter sucede lo siguiente:

1.- Le aparece un cero a mitad de la instrucción
2.- Corta la ultima parte de la orden.

Pongo ejemplos:

Comando completo y que funciona escribiéndolo directo en la consola:

C:\Program Files\MariaDB 11.2\bin\mysql -u vdbnr8ds_backup -prestaurardb <c:\Cuentas32\Backup\2023-09-26-H17-M18-Cuentas32BD.sql vdbnr8ds_cuentas32_demo

Si lo hago desde el .BAT, muestra esto arrojando el respectivo mensaje de error:

C:\Program Files\MariaDB 11.2\bin>mysql -u vdbnr8ds_backup -prestaurardb 0<C:\Cuentas32\Backup\2023-09-26-H17-M18-Cuentas32BD.sql
ERROR 1046 (3D000) at line 22: No database selected

Como pueden observar, inserta un CERO a mitad de la instrucción (lo resalté en rojo) , y corta el nombre de la base de datos a restaurar al final de la misma.

Ya invertí dos días tratando de conseguir el error y no pude. Sucede lo mismo haciéndolo desde código fuente y también manualmente directo en la consola.


A alguien le ha pasado algo semejante?
"Los errores en programación, siempre están entre la silla y el teclado..."

Fwh 19.06 32 bits + Harbour 3.2 + Borland 7.4 + MariaDB + TDolphin

Carora, Estado Lara, Venezuela.
User avatar
JoseAlvarez
 
Posts: 805
Joined: Sun Nov 09, 2014 5:01 pm

Re: Archivo .BAT no funciona

Postby Willi Quintana » Wed Sep 27, 2023 10:53 am

Mi estimado, buenos dias,
¿Como construyes el .bat ?, aqui te envio un ejemplo
Code: Select all  Expand view  RUN

Function DBackUp()
local cFile, lEsc, nHand, cComando, hCambios, cText, oBrush, oDls, oSay, cFileBackup

cFile := "backup.bat"
lEsc := .f.

IF !FFERASE( cFile )
  Return(.f.)
EndIf

cComando := ""

IF !FILE( cFile )

 nHand := FCreate( cFile )
 FWrite(nHand, cComando )
 FClose(nHand)

 // Respaldo Antes de la Auditoria, Nombre del DUMP
 cFileBackup := 'respaldo_' + DTOS(Date()) + '_' + Time() + '.sql'

 cComando := ""
 cComando += 'mysqldump -h' + oApp:cConexion + ' -u' + oApp:cUser + ' -p' + oApp:cPassword + ' ' + oApp:cDatabase + ' > .\backup'
 cComando += cFileBackup + CRLF

 hCambios := FOpen( cFile, FO_READWRITE + FO_SHARED )
 FSeek( hCambios, 0, FS_END)
 FWrite( hCambios, cComando )
 FClose(nHand)

endif

//*------------- Proceso de Generacion del DUMP de la base de datos
lEsc := .F.

cText := ""

DEFINE DIALOG oDls RESOURCE "DLG_AVISO2" TITLE "Mi Respaldo ..." TRANSPARENT

 REDEFINE SAY oSay PROMPT cText ID 100 OF oDls ;
 COLORS CLR_WHITE

 oDls:bStart := { || WaitRun( cFile, 0 ), lEsc := .T., oDls:End() }

ACTIVATE DIALOG oDls CENTERED VALID lEsc

rETURN (niL)
User avatar
Willi Quintana
 
Posts: 1022
Joined: Sun Oct 09, 2005 10:41 pm
Location: Cusco - Perú

Re: Archivo .BAT no funciona

Postby JoseAlvarez » Wed Sep 27, 2023 11:13 am

Hola willi, como estas?

Desde codigo, lo hago asi:

Code: Select all  Expand view  RUN
 local h

    local cComando
 
    cComando := 'mysql -u cUsuario -p'+cPassword+' < '+cArchivo+' '+_cDatabase

    h := fcreate( ("_4.bat") );  fwrite( h,  cComando ) ; fclose( h )
 


Ahora bien, después de tanto probar, quise descartar haciendo el .BAT directo con el Block de Notas de Windows, y el resultado es igual. Me presenta el mismo error. Es solo con el .BAT de restauración. Con el de respaldar funciona perfecto tanto desde código como directo hecho con block de notas.
"Los errores en programación, siempre están entre la silla y el teclado..."

Fwh 19.06 32 bits + Harbour 3.2 + Borland 7.4 + MariaDB + TDolphin

Carora, Estado Lara, Venezuela.
User avatar
JoseAlvarez
 
Posts: 805
Joined: Sun Nov 09, 2014 5:01 pm

Re: Archivo .BAT no funciona

Postby jnavas » Wed Sep 27, 2023 12:57 pm

José,
Saludos.
Puedes validar copiando el programa binario de maria BD en tu carpeta y ejecutar el .BAT en la misma ruta de tu programa binario.
En mi caso genero un *.bat en la misma carpeta de mi aplicación.
c:\dpsgev60\respaldo.bat
quien ejecutará a mysql.exe y mysqldump.exe ubicados en una subcarpeta c:\dpsgev60\mysql
User avatar
jnavas
 
Posts: 479
Joined: Wed Nov 16, 2005 12:03 pm
Location: Caracas - Venezuela

Re: Archivo .BAT no funciona

Postby Willi Quintana » Wed Sep 27, 2023 3:03 pm

Mi Estimado, esto funciona correctamente: (sustituye lo que corresponda)
Code: Select all  Expand view  RUN

//------------------------------------------------------------------------------------
Function DRestore()
local cFile, lEsc, nHand, cComando, hCambios, cText, oBrush, oDls, oSay, cFileBackup, cNDBase, cUser, cPass

cNDBase     := "D:\SYSTEMDB\1206\MariaDb1011\bin\mysql alprogeneirl"
cFileBackUp := "D:\PRGS\SIAE\BIN\alprogen.sql"
cUser       := "root"
cPass       := "qazwsxedc"

cFile := "restore.bat"
lEsc := .f.

IF !FFERASE( cFile )
  Return(.f.)
EndIf

cComando := ""

IF !FILE( cFile )

 nHand := FCreate( cFile )
 FWrite(nHand, cComando )
 FClose(nHand)

// ojo, ruta completa.....
 cComando :=  cNDBase + " < " + cFileBackUp + " -u " + cUser + " -p" + cPass

 hCambios := FOpen( cFile, FO_READWRITE + FO_SHARED )
 FSeek( hCambios, 0, FS_END)
 FWrite( hCambios, cComando )
 FClose(nHand)

endif

//*------------- Proceso de Generacion del DUMP de la base de datos
lEsc := .F.

cText := ""

DEFINE DIALOG oDls RESOURCE "DLG_AVISO2" TITLE "Mi Respaldo ..." TRANSPARENT

 REDEFINE SAY oSay PROMPT cText ID 100 OF oDls ;
 COLORS CLR_WHITE

 oDls:bStart := { || WaitRun( cFile, 0 ), lEsc := .T., oDls:End() }

ACTIVATE DIALOG oDls CENTERED VALID lEsc

RETURN (niL)

 
User avatar
Willi Quintana
 
Posts: 1022
Joined: Sun Oct 09, 2005 10:41 pm
Location: Cusco - Perú

Re: Archivo .BAT no funciona

Postby Willi Quintana » Wed Sep 27, 2023 3:09 pm

Mi estimado, el bat que queda asi:

D:\SYSTEMDB\1206\MariaDb1011\bin\mysql alprogeneirl < D:\PRGS\SIAE\BIN\alprogen.sql -u root -pqazwsxedc
User avatar
Willi Quintana
 
Posts: 1022
Joined: Sun Oct 09, 2005 10:41 pm
Location: Cusco - Perú

Re: Archivo .BAT no funciona

Postby JoseAlvarez » Thu Sep 28, 2023 3:12 am

Hola a todos colegas.

Una vez más agradecido por la ayuda en este maravilloso foro.

Amigo Juan Navas, intente hacerlo como me indicaste, ya que era la vía más rápida. Pero no funcionó. Seguía el error. No se si fue que no supe implementarlo, pero lo hice de todas las maneras posibles. El error estaba duro de matar.

Estimado Willi, tu código funcionó a la perfección. Solo hice los retoques de adecuación necesarios y funciona ¡ perfecto !

Con ello solucioné mi problema-

Muy agradecido a ambos por sus ideas y soluciones.

Solo me queda la duda del por que dejó de funcionar algo que trabajó bien por años. Pero tampoco me voy a preocupar por eso.

Un abrazo a todos !!
"Los errores en programación, siempre están entre la silla y el teclado..."

Fwh 19.06 32 bits + Harbour 3.2 + Borland 7.4 + MariaDB + TDolphin

Carora, Estado Lara, Venezuela.
User avatar
JoseAlvarez
 
Posts: 805
Joined: Sun Nov 09, 2014 5:01 pm

Re: Archivo .BAT no funciona

Postby jnavas » Fri Sep 29, 2023 4:36 pm

Jose,
Gracias, voy a tomar las recomendaciones de Willy,
Wylli, agradecido.
En este sitio, un colega reporta la misma incidencia.
https://www.lawebdelprogramador.com/for ... .html#last
User avatar
jnavas
 
Posts: 479
Joined: Wed Nov 16, 2005 12:03 pm
Location: Caracas - Venezuela

Re: Archivo .BAT no funciona

Postby jnavas » Fri Sep 29, 2023 4:54 pm

José
Saludos,
El resultado el .BAT quedó de esta manera:
c:\adp\mysql\mysql.exe SGEV60_TEST < c:\adp\dpsgev60\dpsgev60.sql -uroot -proot --host=127.0.0.1 --port=3306 > TEMP\MYSQL.LOG
User avatar
jnavas
 
Posts: 479
Joined: Wed Nov 16, 2005 12:03 pm
Location: Caracas - Venezuela


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: No registered users and 109 guests

cron