In order for this site to work correctly we need to store a small file (called a cookie) on your computer. Most every site in the world does this, however since the 25th of May 2011, by law we have to get your permission first. Please abandon the forum if you disagree.
Para que este foro funcione correctamente es necesario guardar un pequeño fichero (llamado cookie) en su ordenador. La mayoría de los sitios de Internet lo hacen, no obstante desde el 25 de Marzo de 2011 y por ley, necesitamos de su permiso con antelación. Abandone este foro si no está conforme.
Para que este foro funcione correctamente es necesario guardar un pequeño fichero (llamado cookie) en su ordenador. La mayoría de los sitios de Internet lo hacen, no obstante desde el 25 de Marzo de 2011 y por ley, necesitamos de su permiso con antelación. Abandone este foro si no está conforme.
Error Hb_xrealloc can't reallocate memory
-
- Mensajes: 360
- Registrado: Mié Dic 03, 2008 5:05 am
Error Hb_xrealloc can't reallocate memory
Hola a Todos !
Estoy migrando unos DBF's a MySql y me sale este error, ya intente
varias cosas , pero sigo con el error: hb_xrealloc can't reallocate memory
este es el codigo:
nRECS:=::oSQLCLIENTES:RECCOUNT()
::oSQLCLIENTES:GOTOP()
::oProg:nMin :=1
::oProg:nValue:=1
::oProg:nMax:=nRECS
X:=0
*AppData:oDBCCR:Execute( "START TRANSACTION")
DO WHILE !::oSQLCLIENTES:EOF()
cNUMERO:=::oSQLCLIENTES:CLIENTE_ID
WITH OBJECT ::oMensaje
:cText:='Registro '+TOSTRING(::oSQLCLIENTES:RECNO())+ ' DE '
TOSTRING(nRECS)
:Adjust()
:Update()
END WITH
::oProg:nValue:=::oProg:nValue+1
::oProg:Update()
cSelect := "insert into clientes2 set "
cSelect +=
"NOMBRECLIENTE="+VALTOSTR(::oSQLCLIENTES:NOMBRECLIENTE)+", "
cSelect +=
"NOMBRECHOFER="+VALTOSTR(::oSQLCLIENTES:NOMBRECHOFER)+","
cSelect +=
"FECNACCHOFER="+VALTOSTR(::oSQLCLIENTES:FECNACCHOFER)+","
cSelect += "EDADCHOFER="+VALTOSTR(::oSQLCLIENTES:EDADCHOFER)+","
cSelect += "DIR1CHOFER="+VALTOSTR(::oSQLCLIENTES:DIR1CHOFER)+","
cSelect += "DIR2CHOFER="+VALTOSTR(::oSQLCLIENTES:DIR2CHOFER)+","
cSelect +=
"CIUDADCHOFER="+VALTOSTR(::oSQLCLIENTES:CIUDADCHOFER)+","
cSelect +=
"ESTADOCHOFER="+VALTOSTR(::oSQLCLIENTES:ESTADOCHOFER)+","
cSelect += "TELCHOFER="+VALTOSTR(::oSQLCLIENTES:TELCHOFER)+","
cSelect +=
"LICENCIACHOFER="+VALTOSTR(::oSQLCLIENTES:LICENCIACHOFER)
AppData:cnn:Execute( cSelect)
/*
* ::oSQLCLIENTES2:FastAddNew()
::oSQLCLIENTES2:NOMBRECHOFER:=::oSQLCLIENTES:NOMBRECHOFER
::oSQLCLIENTES2:NOMBRECLIENTE:=::oSQLCLIENTES:NOMBRECLIENTE
::oSQLCLIENTES2:FECNACCHOFER:=::oSQLCLIENTES:FECNACCHOFER
::oSQLCLIENTES2:EDADCHOFER:=::oSQLCLIENTES:EDADCHOFER
::oSQLCLIENTES2:DIR1CHOFER:=::oSQLCLIENTES:DIR1CHOFER
::oSQLCLIENTES2:DIR2CHOFER:=::oSQLCLIENTES:DIR2CHOFER
::oSQLCLIENTES2:CIUDADCHOFER:=::oSQLCLIENTES:CIUDADCHOFER
::oSQLCLIENTES2:ESTADOCHOFER:=::oSQLCLIENTES:ESTADOCHOFER
::oSQLCLIENTES2:TELCHOFER:=::oSQLCLIENTES:TELCHOFER
::oSQLCLIENTES2:LICENCIACHOFER:=::oSQLCLIENTES2:LICENCIACHOF ER
::oSQLCLIENTES2:FastUpdate()
*/
nLASTID:=AppData:cnn:QueryValue("SELECT LAST_INSERT_ID()")
cSQL:="SELECT * FROM autos WHERE cliente_id="+VALTOSTR(cNUMERO)
oDS:=AppData:cnn:Query(cSQL)
IF oDS:Reccount()>0
DO WHILE oDS:CLIENTE_ID=cNUMERO .AND. !oDS:EOF()
cSelect := "insert into autos2 set "
cSelect += "CLIENTE_ID="+VALTOSTR(nLASTID)+","
cSelect += "ANO="+VALTOSTR(oDS:ANO)+","
cSelect += "MARCA="+VALTOSTR(oDS:MARCA)+","
cSelect += "MODELO="+VALTOSTR(oDS:MODELO)+","
cSelect += "SERIE="+VALTOSTR(oDS:SERIE)+","
cSelect += "PLACAS="+VALTOSTR(oDS:PLACAS)
AppData:cnn:Execute( cSelect)
/*
::oSQLAUTOS2:FastAddNew()
::oSQLAUTOS2:CLIENTE_ID:=nLASTID
::oSQLAUTOS2:ANO:=oDS:FIELDGETBYNAME('Aí‘O')
::oSQLAUTOS2:MARCA:=oDS:FIELDGETBYNAME('MARCA')
::oSQLAUTOS2:MODELO:=oDS:FIELDGETBYNAME('MODELO')
::oSQLAUTOS2:SERIE:=oDS:FIELDGETBYNAME('SERIE')
::oSQLAUTOS2:PLACAS:=oDS:FIELDGETBYNAME('PLACAS')
::oSQLAUTOS2:FastUpdate()
*/
oDS:Skip()
ENDDO
ENDIF
HB_GCALL(.T.) <=== puse este linea , aver si asi ,pero sigue igual
oDS:Close()
::oSQLCLIENTES:SKIP()
ENDDO
Lo usaba primero con FastAddnew() y FastUpdate() y
Lo hice al estilo Insert y de todas maneras , es el mismo error.
rebasando los 14900 registros procesados sale este error.
Saludos....
--
Estoy migrando unos DBF's a MySql y me sale este error, ya intente
varias cosas , pero sigo con el error: hb_xrealloc can't reallocate memory
este es el codigo:
nRECS:=::oSQLCLIENTES:RECCOUNT()
::oSQLCLIENTES:GOTOP()
::oProg:nMin :=1
::oProg:nValue:=1
::oProg:nMax:=nRECS
X:=0
*AppData:oDBCCR:Execute( "START TRANSACTION")
DO WHILE !::oSQLCLIENTES:EOF()
cNUMERO:=::oSQLCLIENTES:CLIENTE_ID
WITH OBJECT ::oMensaje
:cText:='Registro '+TOSTRING(::oSQLCLIENTES:RECNO())+ ' DE '
TOSTRING(nRECS)
:Adjust()
:Update()
END WITH
::oProg:nValue:=::oProg:nValue+1
::oProg:Update()
cSelect := "insert into clientes2 set "
cSelect +=
"NOMBRECLIENTE="+VALTOSTR(::oSQLCLIENTES:NOMBRECLIENTE)+", "
cSelect +=
"NOMBRECHOFER="+VALTOSTR(::oSQLCLIENTES:NOMBRECHOFER)+","
cSelect +=
"FECNACCHOFER="+VALTOSTR(::oSQLCLIENTES:FECNACCHOFER)+","
cSelect += "EDADCHOFER="+VALTOSTR(::oSQLCLIENTES:EDADCHOFER)+","
cSelect += "DIR1CHOFER="+VALTOSTR(::oSQLCLIENTES:DIR1CHOFER)+","
cSelect += "DIR2CHOFER="+VALTOSTR(::oSQLCLIENTES:DIR2CHOFER)+","
cSelect +=
"CIUDADCHOFER="+VALTOSTR(::oSQLCLIENTES:CIUDADCHOFER)+","
cSelect +=
"ESTADOCHOFER="+VALTOSTR(::oSQLCLIENTES:ESTADOCHOFER)+","
cSelect += "TELCHOFER="+VALTOSTR(::oSQLCLIENTES:TELCHOFER)+","
cSelect +=
"LICENCIACHOFER="+VALTOSTR(::oSQLCLIENTES:LICENCIACHOFER)
AppData:cnn:Execute( cSelect)
/*
* ::oSQLCLIENTES2:FastAddNew()
::oSQLCLIENTES2:NOMBRECHOFER:=::oSQLCLIENTES:NOMBRECHOFER
::oSQLCLIENTES2:NOMBRECLIENTE:=::oSQLCLIENTES:NOMBRECLIENTE
::oSQLCLIENTES2:FECNACCHOFER:=::oSQLCLIENTES:FECNACCHOFER
::oSQLCLIENTES2:EDADCHOFER:=::oSQLCLIENTES:EDADCHOFER
::oSQLCLIENTES2:DIR1CHOFER:=::oSQLCLIENTES:DIR1CHOFER
::oSQLCLIENTES2:DIR2CHOFER:=::oSQLCLIENTES:DIR2CHOFER
::oSQLCLIENTES2:CIUDADCHOFER:=::oSQLCLIENTES:CIUDADCHOFER
::oSQLCLIENTES2:ESTADOCHOFER:=::oSQLCLIENTES:ESTADOCHOFER
::oSQLCLIENTES2:TELCHOFER:=::oSQLCLIENTES:TELCHOFER
::oSQLCLIENTES2:LICENCIACHOFER:=::oSQLCLIENTES2:LICENCIACHOF ER
::oSQLCLIENTES2:FastUpdate()
*/
nLASTID:=AppData:cnn:QueryValue("SELECT LAST_INSERT_ID()")
cSQL:="SELECT * FROM autos WHERE cliente_id="+VALTOSTR(cNUMERO)
oDS:=AppData:cnn:Query(cSQL)
IF oDS:Reccount()>0
DO WHILE oDS:CLIENTE_ID=cNUMERO .AND. !oDS:EOF()
cSelect := "insert into autos2 set "
cSelect += "CLIENTE_ID="+VALTOSTR(nLASTID)+","
cSelect += "ANO="+VALTOSTR(oDS:ANO)+","
cSelect += "MARCA="+VALTOSTR(oDS:MARCA)+","
cSelect += "MODELO="+VALTOSTR(oDS:MODELO)+","
cSelect += "SERIE="+VALTOSTR(oDS:SERIE)+","
cSelect += "PLACAS="+VALTOSTR(oDS:PLACAS)
AppData:cnn:Execute( cSelect)
/*
::oSQLAUTOS2:FastAddNew()
::oSQLAUTOS2:CLIENTE_ID:=nLASTID
::oSQLAUTOS2:ANO:=oDS:FIELDGETBYNAME('Aí‘O')
::oSQLAUTOS2:MARCA:=oDS:FIELDGETBYNAME('MARCA')
::oSQLAUTOS2:MODELO:=oDS:FIELDGETBYNAME('MODELO')
::oSQLAUTOS2:SERIE:=oDS:FIELDGETBYNAME('SERIE')
::oSQLAUTOS2:PLACAS:=oDS:FIELDGETBYNAME('PLACAS')
::oSQLAUTOS2:FastUpdate()
*/
oDS:Skip()
ENDDO
ENDIF
HB_GCALL(.T.) <=== puse este linea , aver si asi ,pero sigue igual
oDS:Close()
::oSQLCLIENTES:SKIP()
ENDDO
Lo usaba primero con FastAddnew() y FastUpdate() y
Lo hice al estilo Insert y de todas maneras , es el mismo error.
rebasando los 14900 registros procesados sale este error.
Saludos....
--
-
- Mensajes: 266
- Registrado: Mar Oct 28, 2008 4:41 am
Error Hb_xrealloc can't reallocate memory
Martín, gusto de saludarte nuevamente.
Recuerdo que cuando empecé a usar Sqlite queria guardar en una tabla cerca
de 100000 de un solo proceso, y no recuerdo bien pero creo que me daba
tambien un error parecido al que te da a ti.
Y uno de los creadores de Xailer me sugirio que usara BeginTrans() y
CommitTrans()
Y con esto pude almacenar todos esos registros sin problema.
Pruebalo, a ver que pasa.
Dios te bendiga
__________ Información de ESET NOD32 Antivirus, versión de la base de firmas de virus 3982 (20090402) __________
ESET NOD32 Antivirus ha comprobado este mensaje.
http://www.eset.com
Recuerdo que cuando empecé a usar Sqlite queria guardar en una tabla cerca
de 100000 de un solo proceso, y no recuerdo bien pero creo que me daba
tambien un error parecido al que te da a ti.
Y uno de los creadores de Xailer me sugirio que usara BeginTrans() y
CommitTrans()
Y con esto pude almacenar todos esos registros sin problema.
Pruebalo, a ver que pasa.
Dios te bendiga
__________ Información de ESET NOD32 Antivirus, versión de la base de firmas de virus 3982 (20090402) __________
ESET NOD32 Antivirus ha comprobado este mensaje.
http://www.eset.com
-
- Mensajes: 360
- Registrado: Mié Dic 03, 2008 5:05 am
Error Hb_xrealloc can't reallocate memory
PEDRO DE LEON RODAS wrote:
> Martín, gusto de saludarte nuevamente.
>
> Recuerdo que cuando empecé a usar Sqlite queria guardar en una tabla cerca
> de 100000 de un solo proceso, y no recuerdo bien pero creo que me daba
> tambien un error parecido al que te da a ti.
>
> Y uno de los creadores de Xailer me sugirio que usara BeginTrans() y
> CommitTrans()
> Y con esto pude almacenar todos esos registros sin problema.
>
> Pruebalo, a ver que pasa.
>
> Dios te bendiga
>
>
>
> __________ Información de ESET NOD32 Antivirus, versión de la base de firmas de virus 3982 (20090402) __________
>
> ESET NOD32 Antivirus ha comprobado este mensaje.
>
> http://www.eset.com
>
>
>
>
Gracias Pedro por la Respuesta !
Pero dentro de las varias cosas que hice , una de esas fue esa.
Usar BeginTrans y CommitTrans.
Pero me seguia dando el error.
Corrigo: la Inf. la estoy pasando de unas Tablas de MySql a otras de MySql.
Saludos...
> Martín, gusto de saludarte nuevamente.
>
> Recuerdo que cuando empecé a usar Sqlite queria guardar en una tabla cerca
> de 100000 de un solo proceso, y no recuerdo bien pero creo que me daba
> tambien un error parecido al que te da a ti.
>
> Y uno de los creadores de Xailer me sugirio que usara BeginTrans() y
> CommitTrans()
> Y con esto pude almacenar todos esos registros sin problema.
>
> Pruebalo, a ver que pasa.
>
> Dios te bendiga
>
>
>
> __________ Información de ESET NOD32 Antivirus, versión de la base de firmas de virus 3982 (20090402) __________
>
> ESET NOD32 Antivirus ha comprobado este mensaje.
>
> http://www.eset.com
>
>
>
>
Gracias Pedro por la Respuesta !
Pero dentro de las varias cosas que hice , una de esas fue esa.
Usar BeginTrans y CommitTrans.
Pero me seguia dando el error.
Corrigo: la Inf. la estoy pasando de unas Tablas de MySql a otras de MySql.
Saludos...
-
- Mensajes: 180
- Registrado: Lun Sep 15, 2008 2:53 pm
Error Hb_xrealloc can't reallocate memory
Martin y si pones el corte de la transaccion cada cierto numeros de
registros.
Con un contado, cuando llegue a 5000 que haga el commit y comience una nueva
transaccion.
Aunque el error es del compilador no del servidor de la base. No se. Si
queres probar.
Juan
"Martin Del Angel" <mdangel@dymsasistemas.com> escribió en el mensaje
news:[email=49d45c79@svctag-j7w3v3j....]49d45c79@svctag-j7w3v3j....[/email]
> Hola a Todos !
>
>
> Estoy migrando unos DBF's a MySql y me sale este error, ya intente
> varias cosas , pero sigo con el error: hb_xrealloc can't reallocate memory
>
> este es el codigo:
>
> nRECS:=::oSQLCLIENTES:RECCOUNT()
> ::oSQLCLIENTES:GOTOP()
> ::oProg:nMin :=1
> ::oProg:nValue:=1
> ::oProg:nMax:=nRECS
> X:=0
> *AppData:oDBCCR:Execute( "START TRANSACTION")
> DO WHILE !::oSQLCLIENTES:EOF()
> cNUMERO:=::oSQLCLIENTES:CLIENTE_ID
>
> WITH OBJECT ::oMensaje
> :cText:='Registro '+TOSTRING(::oSQLCLIENTES:RECNO())+ ' DE '
> TOSTRING(nRECS)
> :Adjust()
> :Update()
> END WITH
> ::oProg:nValue:=::oProg:nValue+1
> ::oProg:Update()
>
> cSelect := "insert into clientes2 set "
> cSelect +=
> "NOMBRECLIENTE="+VALTOSTR(::oSQLCLIENTES:NOMBRECLIENTE)+", "
> cSelect +=
> "NOMBRECHOFER="+VALTOSTR(::oSQLCLIENTES:NOMBRECHOFER)+","
> cSelect +=
> "FECNACCHOFER="+VALTOSTR(::oSQLCLIENTES:FECNACCHOFER)+","
> cSelect += "EDADCHOFER="+VALTOSTR(::oSQLCLIENTES:EDADCHOFER)+","
> cSelect += "DIR1CHOFER="+VALTOSTR(::oSQLCLIENTES:DIR1CHOFER)+","
> cSelect += "DIR2CHOFER="+VALTOSTR(::oSQLCLIENTES:DIR2CHOFER)+","
> cSelect +=
> "CIUDADCHOFER="+VALTOSTR(::oSQLCLIENTES:CIUDADCHOFER)+","
> cSelect +=
> "ESTADOCHOFER="+VALTOSTR(::oSQLCLIENTES:ESTADOCHOFER)+","
> cSelect += "TELCHOFER="+VALTOSTR(::oSQLCLIENTES:TELCHOFER)+","
> cSelect +=
> "LICENCIACHOFER="+VALTOSTR(::oSQLCLIENTES:LICENCIACHOFER)
> AppData:cnn:Execute( cSelect)
>
>
> /*
> * ::oSQLCLIENTES2:FastAddNew()
> ::oSQLCLIENTES2:NOMBRECHOFER:=::oSQLCLIENTES:NOMBRECHOFER
> ::oSQLCLIENTES2:NOMBRECLIENTE:=::oSQLCLIENTES:NOMBRECLIENTE
> ::oSQLCLIENTES2:FECNACCHOFER:=::oSQLCLIENTES:FECNACCHOFER
> ::oSQLCLIENTES2:EDADCHOFER:=::oSQLCLIENTES:EDADCHOFER
> ::oSQLCLIENTES2:DIR1CHOFER:=::oSQLCLIENTES:DIR1CHOFER
> ::oSQLCLIENTES2:DIR2CHOFER:=::oSQLCLIENTES:DIR2CHOFER
> ::oSQLCLIENTES2:CIUDADCHOFER:=::oSQLCLIENTES:CIUDADCHOFER
> ::oSQLCLIENTES2:ESTADOCHOFER:=::oSQLCLIENTES:ESTADOCHOFER
> ::oSQLCLIENTES2:TELCHOFER:=::oSQLCLIENTES:TELCHOFER
> ::oSQLCLIENTES2:LICENCIACHOFER:=::oSQLCLIENTES2:LICENCIACHOF ER
> ::oSQLCLIENTES2:FastUpdate()
> */
>
> nLASTID:=AppData:cnn:QueryValue("SELECT LAST_INSERT_ID()")
>
> cSQL:="SELECT * FROM autos WHERE cliente_id="+VALTOSTR(cNUMERO)
> oDS:=AppData:cnn:Query(cSQL)
> IF oDS:Reccount()>0
> DO WHILE oDS:CLIENTE_ID=cNUMERO .AND. !oDS:EOF()
>
> cSelect := "insert into autos2 set "
> cSelect += "CLIENTE_ID="+VALTOSTR(nLASTID)+","
> cSelect += "ANO="+VALTOSTR(oDS:ANO)+","
> cSelect += "MARCA="+VALTOSTR(oDS:MARCA)+","
> cSelect += "MODELO="+VALTOSTR(oDS:MODELO)+","
> cSelect += "SERIE="+VALTOSTR(oDS:SERIE)+","
> cSelect += "PLACAS="+VALTOSTR(oDS:PLACAS)
> AppData:cnn:Execute( cSelect)
>
> /*
> ::oSQLAUTOS2:FastAddNew()
> ::oSQLAUTOS2:CLIENTE_ID:=nLASTID
> ::oSQLAUTOS2:ANO:=oDS:FIELDGETBYNAME('AÑO')
> ::oSQLAUTOS2:MARCA:=oDS:FIELDGETBYNAME('MARCA')
> ::oSQLAUTOS2:MODELO:=oDS:FIELDGETBYNAME('MODELO')
> ::oSQLAUTOS2:SERIE:=oDS:FIELDGETBYNAME('SERIE')
> ::oSQLAUTOS2:PLACAS:=oDS:FIELDGETBYNAME('PLACAS')
> ::oSQLAUTOS2:FastUpdate()
> */
>
>
> oDS:Skip()
> ENDDO
>
> ENDIF
>
> HB_GCALL(.T.) <=== puse este linea , aver si asi ,pero sigue igual
>
> oDS:Close()
> ::oSQLCLIENTES:SKIP()
>
> ENDDO
>
> Lo usaba primero con FastAddnew() y FastUpdate() y
>
> Lo hice al estilo Insert y de todas maneras , es el mismo error.
>
> rebasando los 14900 registros procesados sale este error.
>
>
> Saludos....
>
>
>
>
registros.
Con un contado, cuando llegue a 5000 que haga el commit y comience una nueva
transaccion.
Aunque el error es del compilador no del servidor de la base. No se. Si
queres probar.
Juan
"Martin Del Angel" <mdangel@dymsasistemas.com> escribió en el mensaje
news:[email=49d45c79@svctag-j7w3v3j....]49d45c79@svctag-j7w3v3j....[/email]
> Hola a Todos !
>
>
> Estoy migrando unos DBF's a MySql y me sale este error, ya intente
> varias cosas , pero sigo con el error: hb_xrealloc can't reallocate memory
>
> este es el codigo:
>
> nRECS:=::oSQLCLIENTES:RECCOUNT()
> ::oSQLCLIENTES:GOTOP()
> ::oProg:nMin :=1
> ::oProg:nValue:=1
> ::oProg:nMax:=nRECS
> X:=0
> *AppData:oDBCCR:Execute( "START TRANSACTION")
> DO WHILE !::oSQLCLIENTES:EOF()
> cNUMERO:=::oSQLCLIENTES:CLIENTE_ID
>
> WITH OBJECT ::oMensaje
> :cText:='Registro '+TOSTRING(::oSQLCLIENTES:RECNO())+ ' DE '
> TOSTRING(nRECS)
> :Adjust()
> :Update()
> END WITH
> ::oProg:nValue:=::oProg:nValue+1
> ::oProg:Update()
>
> cSelect := "insert into clientes2 set "
> cSelect +=
> "NOMBRECLIENTE="+VALTOSTR(::oSQLCLIENTES:NOMBRECLIENTE)+", "
> cSelect +=
> "NOMBRECHOFER="+VALTOSTR(::oSQLCLIENTES:NOMBRECHOFER)+","
> cSelect +=
> "FECNACCHOFER="+VALTOSTR(::oSQLCLIENTES:FECNACCHOFER)+","
> cSelect += "EDADCHOFER="+VALTOSTR(::oSQLCLIENTES:EDADCHOFER)+","
> cSelect += "DIR1CHOFER="+VALTOSTR(::oSQLCLIENTES:DIR1CHOFER)+","
> cSelect += "DIR2CHOFER="+VALTOSTR(::oSQLCLIENTES:DIR2CHOFER)+","
> cSelect +=
> "CIUDADCHOFER="+VALTOSTR(::oSQLCLIENTES:CIUDADCHOFER)+","
> cSelect +=
> "ESTADOCHOFER="+VALTOSTR(::oSQLCLIENTES:ESTADOCHOFER)+","
> cSelect += "TELCHOFER="+VALTOSTR(::oSQLCLIENTES:TELCHOFER)+","
> cSelect +=
> "LICENCIACHOFER="+VALTOSTR(::oSQLCLIENTES:LICENCIACHOFER)
> AppData:cnn:Execute( cSelect)
>
>
> /*
> * ::oSQLCLIENTES2:FastAddNew()
> ::oSQLCLIENTES2:NOMBRECHOFER:=::oSQLCLIENTES:NOMBRECHOFER
> ::oSQLCLIENTES2:NOMBRECLIENTE:=::oSQLCLIENTES:NOMBRECLIENTE
> ::oSQLCLIENTES2:FECNACCHOFER:=::oSQLCLIENTES:FECNACCHOFER
> ::oSQLCLIENTES2:EDADCHOFER:=::oSQLCLIENTES:EDADCHOFER
> ::oSQLCLIENTES2:DIR1CHOFER:=::oSQLCLIENTES:DIR1CHOFER
> ::oSQLCLIENTES2:DIR2CHOFER:=::oSQLCLIENTES:DIR2CHOFER
> ::oSQLCLIENTES2:CIUDADCHOFER:=::oSQLCLIENTES:CIUDADCHOFER
> ::oSQLCLIENTES2:ESTADOCHOFER:=::oSQLCLIENTES:ESTADOCHOFER
> ::oSQLCLIENTES2:TELCHOFER:=::oSQLCLIENTES:TELCHOFER
> ::oSQLCLIENTES2:LICENCIACHOFER:=::oSQLCLIENTES2:LICENCIACHOF ER
> ::oSQLCLIENTES2:FastUpdate()
> */
>
> nLASTID:=AppData:cnn:QueryValue("SELECT LAST_INSERT_ID()")
>
> cSQL:="SELECT * FROM autos WHERE cliente_id="+VALTOSTR(cNUMERO)
> oDS:=AppData:cnn:Query(cSQL)
> IF oDS:Reccount()>0
> DO WHILE oDS:CLIENTE_ID=cNUMERO .AND. !oDS:EOF()
>
> cSelect := "insert into autos2 set "
> cSelect += "CLIENTE_ID="+VALTOSTR(nLASTID)+","
> cSelect += "ANO="+VALTOSTR(oDS:ANO)+","
> cSelect += "MARCA="+VALTOSTR(oDS:MARCA)+","
> cSelect += "MODELO="+VALTOSTR(oDS:MODELO)+","
> cSelect += "SERIE="+VALTOSTR(oDS:SERIE)+","
> cSelect += "PLACAS="+VALTOSTR(oDS:PLACAS)
> AppData:cnn:Execute( cSelect)
>
> /*
> ::oSQLAUTOS2:FastAddNew()
> ::oSQLAUTOS2:CLIENTE_ID:=nLASTID
> ::oSQLAUTOS2:ANO:=oDS:FIELDGETBYNAME('AÑO')
> ::oSQLAUTOS2:MARCA:=oDS:FIELDGETBYNAME('MARCA')
> ::oSQLAUTOS2:MODELO:=oDS:FIELDGETBYNAME('MODELO')
> ::oSQLAUTOS2:SERIE:=oDS:FIELDGETBYNAME('SERIE')
> ::oSQLAUTOS2:PLACAS:=oDS:FIELDGETBYNAME('PLACAS')
> ::oSQLAUTOS2:FastUpdate()
> */
>
>
> oDS:Skip()
> ENDDO
>
> ENDIF
>
> HB_GCALL(.T.) <=== puse este linea , aver si asi ,pero sigue igual
>
> oDS:Close()
> ::oSQLCLIENTES:SKIP()
>
> ENDDO
>
> Lo usaba primero con FastAddnew() y FastUpdate() y
>
> Lo hice al estilo Insert y de todas maneras , es el mismo error.
>
> rebasando los 14900 registros procesados sale este error.
>
>
> Saludos....
>
>
>
>
-
- Mensajes: 180
- Registrado: Lun Sep 15, 2008 2:53 pm
Error Hb_xrealloc can't reallocate memory
Martin.
Acabo de hacer un transpaso de DBF a MySQL varias tablas. A una la cargue
con 204000 registros y tardo mas de hora y media (es una notebook chica) ,
pero la paso sin problemas.
Estoy usando la version Xailer 1.9.8, Xp SP2, 1 G ram. Uso el metodo de
Select.
La tabla es de 10 campos, todos de texto. Habria que hacer mas pruebas,pero
tal vez el problema es con algun tipo de datos en especial.
Voy a seguir probando, si tengo alguna novedad las comento.
Juan
"Martin Del Angel" <mdangel@dymsasistemas.com> escribió en el mensaje
news:[email=49d45c79@svctag-j7w3v3j....]49d45c79@svctag-j7w3v3j....[/email]
> Hola a Todos !
>
>
> Estoy migrando unos DBF's a MySql y me sale este error, ya intente
> varias cosas , pero sigo con el error: hb_xrealloc can't reallocate memory
>
> este es el codigo:
>
> nRECS:=::oSQLCLIENTES:RECCOUNT()
> ::oSQLCLIENTES:GOTOP()
> ::oProg:nMin :=1
> ::oProg:nValue:=1
> ::oProg:nMax:=nRECS
> X:=0
> *AppData:oDBCCR:Execute( "START TRANSACTION")
> DO WHILE !::oSQLCLIENTES:EOF()
> cNUMERO:=::oSQLCLIENTES:CLIENTE_ID
>
> WITH OBJECT ::oMensaje
> :cText:='Registro '+TOSTRING(::oSQLCLIENTES:RECNO())+ ' DE '
> TOSTRING(nRECS)
> :Adjust()
> :Update()
> END WITH
> ::oProg:nValue:=::oProg:nValue+1
> ::oProg:Update()
>
> cSelect := "insert into clientes2 set "
> cSelect +=
> "NOMBRECLIENTE="+VALTOSTR(::oSQLCLIENTES:NOMBRECLIENTE)+", "
> cSelect +=
> "NOMBRECHOFER="+VALTOSTR(::oSQLCLIENTES:NOMBRECHOFER)+","
> cSelect +=
> "FECNACCHOFER="+VALTOSTR(::oSQLCLIENTES:FECNACCHOFER)+","
> cSelect += "EDADCHOFER="+VALTOSTR(::oSQLCLIENTES:EDADCHOFER)+","
> cSelect += "DIR1CHOFER="+VALTOSTR(::oSQLCLIENTES:DIR1CHOFER)+","
> cSelect += "DIR2CHOFER="+VALTOSTR(::oSQLCLIENTES:DIR2CHOFER)+","
> cSelect +=
> "CIUDADCHOFER="+VALTOSTR(::oSQLCLIENTES:CIUDADCHOFER)+","
> cSelect +=
> "ESTADOCHOFER="+VALTOSTR(::oSQLCLIENTES:ESTADOCHOFER)+","
> cSelect += "TELCHOFER="+VALTOSTR(::oSQLCLIENTES:TELCHOFER)+","
> cSelect +=
> "LICENCIACHOFER="+VALTOSTR(::oSQLCLIENTES:LICENCIACHOFER)
> AppData:cnn:Execute( cSelect)
>
>
> /*
> * ::oSQLCLIENTES2:FastAddNew()
> ::oSQLCLIENTES2:NOMBRECHOFER:=::oSQLCLIENTES:NOMBRECHOFER
> ::oSQLCLIENTES2:NOMBRECLIENTE:=::oSQLCLIENTES:NOMBRECLIENTE
> ::oSQLCLIENTES2:FECNACCHOFER:=::oSQLCLIENTES:FECNACCHOFER
> ::oSQLCLIENTES2:EDADCHOFER:=::oSQLCLIENTES:EDADCHOFER
> ::oSQLCLIENTES2:DIR1CHOFER:=::oSQLCLIENTES:DIR1CHOFER
> ::oSQLCLIENTES2:DIR2CHOFER:=::oSQLCLIENTES:DIR2CHOFER
> ::oSQLCLIENTES2:CIUDADCHOFER:=::oSQLCLIENTES:CIUDADCHOFER
> ::oSQLCLIENTES2:ESTADOCHOFER:=::oSQLCLIENTES:ESTADOCHOFER
> ::oSQLCLIENTES2:TELCHOFER:=::oSQLCLIENTES:TELCHOFER
> ::oSQLCLIENTES2:LICENCIACHOFER:=::oSQLCLIENTES2:LICENCIACHOF ER
> ::oSQLCLIENTES2:FastUpdate()
> */
>
> nLASTID:=AppData:cnn:QueryValue("SELECT LAST_INSERT_ID()")
>
> cSQL:="SELECT * FROM autos WHERE cliente_id="+VALTOSTR(cNUMERO)
> oDS:=AppData:cnn:Query(cSQL)
> IF oDS:Reccount()>0
> DO WHILE oDS:CLIENTE_ID=cNUMERO .AND. !oDS:EOF()
>
> cSelect := "insert into autos2 set "
> cSelect += "CLIENTE_ID="+VALTOSTR(nLASTID)+","
> cSelect += "ANO="+VALTOSTR(oDS:ANO)+","
> cSelect += "MARCA="+VALTOSTR(oDS:MARCA)+","
> cSelect += "MODELO="+VALTOSTR(oDS:MODELO)+","
> cSelect += "SERIE="+VALTOSTR(oDS:SERIE)+","
> cSelect += "PLACAS="+VALTOSTR(oDS:PLACAS)
> AppData:cnn:Execute( cSelect)
>
> /*
> ::oSQLAUTOS2:FastAddNew()
> ::oSQLAUTOS2:CLIENTE_ID:=nLASTID
> ::oSQLAUTOS2:ANO:=oDS:FIELDGETBYNAME('AÑO')
> ::oSQLAUTOS2:MARCA:=oDS:FIELDGETBYNAME('MARCA')
> ::oSQLAUTOS2:MODELO:=oDS:FIELDGETBYNAME('MODELO')
> ::oSQLAUTOS2:SERIE:=oDS:FIELDGETBYNAME('SERIE')
> ::oSQLAUTOS2:PLACAS:=oDS:FIELDGETBYNAME('PLACAS')
> ::oSQLAUTOS2:FastUpdate()
> */
>
>
> oDS:Skip()
> ENDDO
>
> ENDIF
>
> HB_GCALL(.T.) <=== puse este linea , aver si asi ,pero sigue igual
>
> oDS:Close()
> ::oSQLCLIENTES:SKIP()
>
> ENDDO
>
> Lo usaba primero con FastAddnew() y FastUpdate() y
>
> Lo hice al estilo Insert y de todas maneras , es el mismo error.
>
> rebasando los 14900 registros procesados sale este error.
>
>
> Saludos....
>
>
>
>
Acabo de hacer un transpaso de DBF a MySQL varias tablas. A una la cargue
con 204000 registros y tardo mas de hora y media (es una notebook chica) ,
pero la paso sin problemas.
Estoy usando la version Xailer 1.9.8, Xp SP2, 1 G ram. Uso el metodo de
Select.
La tabla es de 10 campos, todos de texto. Habria que hacer mas pruebas,pero
tal vez el problema es con algun tipo de datos en especial.
Voy a seguir probando, si tengo alguna novedad las comento.
Juan
"Martin Del Angel" <mdangel@dymsasistemas.com> escribió en el mensaje
news:[email=49d45c79@svctag-j7w3v3j....]49d45c79@svctag-j7w3v3j....[/email]
> Hola a Todos !
>
>
> Estoy migrando unos DBF's a MySql y me sale este error, ya intente
> varias cosas , pero sigo con el error: hb_xrealloc can't reallocate memory
>
> este es el codigo:
>
> nRECS:=::oSQLCLIENTES:RECCOUNT()
> ::oSQLCLIENTES:GOTOP()
> ::oProg:nMin :=1
> ::oProg:nValue:=1
> ::oProg:nMax:=nRECS
> X:=0
> *AppData:oDBCCR:Execute( "START TRANSACTION")
> DO WHILE !::oSQLCLIENTES:EOF()
> cNUMERO:=::oSQLCLIENTES:CLIENTE_ID
>
> WITH OBJECT ::oMensaje
> :cText:='Registro '+TOSTRING(::oSQLCLIENTES:RECNO())+ ' DE '
> TOSTRING(nRECS)
> :Adjust()
> :Update()
> END WITH
> ::oProg:nValue:=::oProg:nValue+1
> ::oProg:Update()
>
> cSelect := "insert into clientes2 set "
> cSelect +=
> "NOMBRECLIENTE="+VALTOSTR(::oSQLCLIENTES:NOMBRECLIENTE)+", "
> cSelect +=
> "NOMBRECHOFER="+VALTOSTR(::oSQLCLIENTES:NOMBRECHOFER)+","
> cSelect +=
> "FECNACCHOFER="+VALTOSTR(::oSQLCLIENTES:FECNACCHOFER)+","
> cSelect += "EDADCHOFER="+VALTOSTR(::oSQLCLIENTES:EDADCHOFER)+","
> cSelect += "DIR1CHOFER="+VALTOSTR(::oSQLCLIENTES:DIR1CHOFER)+","
> cSelect += "DIR2CHOFER="+VALTOSTR(::oSQLCLIENTES:DIR2CHOFER)+","
> cSelect +=
> "CIUDADCHOFER="+VALTOSTR(::oSQLCLIENTES:CIUDADCHOFER)+","
> cSelect +=
> "ESTADOCHOFER="+VALTOSTR(::oSQLCLIENTES:ESTADOCHOFER)+","
> cSelect += "TELCHOFER="+VALTOSTR(::oSQLCLIENTES:TELCHOFER)+","
> cSelect +=
> "LICENCIACHOFER="+VALTOSTR(::oSQLCLIENTES:LICENCIACHOFER)
> AppData:cnn:Execute( cSelect)
>
>
> /*
> * ::oSQLCLIENTES2:FastAddNew()
> ::oSQLCLIENTES2:NOMBRECHOFER:=::oSQLCLIENTES:NOMBRECHOFER
> ::oSQLCLIENTES2:NOMBRECLIENTE:=::oSQLCLIENTES:NOMBRECLIENTE
> ::oSQLCLIENTES2:FECNACCHOFER:=::oSQLCLIENTES:FECNACCHOFER
> ::oSQLCLIENTES2:EDADCHOFER:=::oSQLCLIENTES:EDADCHOFER
> ::oSQLCLIENTES2:DIR1CHOFER:=::oSQLCLIENTES:DIR1CHOFER
> ::oSQLCLIENTES2:DIR2CHOFER:=::oSQLCLIENTES:DIR2CHOFER
> ::oSQLCLIENTES2:CIUDADCHOFER:=::oSQLCLIENTES:CIUDADCHOFER
> ::oSQLCLIENTES2:ESTADOCHOFER:=::oSQLCLIENTES:ESTADOCHOFER
> ::oSQLCLIENTES2:TELCHOFER:=::oSQLCLIENTES:TELCHOFER
> ::oSQLCLIENTES2:LICENCIACHOFER:=::oSQLCLIENTES2:LICENCIACHOF ER
> ::oSQLCLIENTES2:FastUpdate()
> */
>
> nLASTID:=AppData:cnn:QueryValue("SELECT LAST_INSERT_ID()")
>
> cSQL:="SELECT * FROM autos WHERE cliente_id="+VALTOSTR(cNUMERO)
> oDS:=AppData:cnn:Query(cSQL)
> IF oDS:Reccount()>0
> DO WHILE oDS:CLIENTE_ID=cNUMERO .AND. !oDS:EOF()
>
> cSelect := "insert into autos2 set "
> cSelect += "CLIENTE_ID="+VALTOSTR(nLASTID)+","
> cSelect += "ANO="+VALTOSTR(oDS:ANO)+","
> cSelect += "MARCA="+VALTOSTR(oDS:MARCA)+","
> cSelect += "MODELO="+VALTOSTR(oDS:MODELO)+","
> cSelect += "SERIE="+VALTOSTR(oDS:SERIE)+","
> cSelect += "PLACAS="+VALTOSTR(oDS:PLACAS)
> AppData:cnn:Execute( cSelect)
>
> /*
> ::oSQLAUTOS2:FastAddNew()
> ::oSQLAUTOS2:CLIENTE_ID:=nLASTID
> ::oSQLAUTOS2:ANO:=oDS:FIELDGETBYNAME('AÑO')
> ::oSQLAUTOS2:MARCA:=oDS:FIELDGETBYNAME('MARCA')
> ::oSQLAUTOS2:MODELO:=oDS:FIELDGETBYNAME('MODELO')
> ::oSQLAUTOS2:SERIE:=oDS:FIELDGETBYNAME('SERIE')
> ::oSQLAUTOS2:PLACAS:=oDS:FIELDGETBYNAME('PLACAS')
> ::oSQLAUTOS2:FastUpdate()
> */
>
>
> oDS:Skip()
> ENDDO
>
> ENDIF
>
> HB_GCALL(.T.) <=== puse este linea , aver si asi ,pero sigue igual
>
> oDS:Close()
> ::oSQLCLIENTES:SKIP()
>
> ENDDO
>
> Lo usaba primero con FastAddnew() y FastUpdate() y
>
> Lo hice al estilo Insert y de todas maneras , es el mismo error.
>
> rebasando los 14900 registros procesados sale este error.
>
>
> Saludos....
>
>
>
>
-
- Mensajes: 360
- Registrado: Mié Dic 03, 2008 5:05 am
Error Hb_xrealloc can't reallocate memory
Juan Castañeda wrote:
> Martin.
> Acabo de hacer un transpaso de DBF a MySQL varias tablas. A una la cargue
> con 204000 registros y tardo mas de hora y media (es una notebook chica) ,
> pero la paso sin problemas.
> Estoy usando la version Xailer 1.9.8, Xp SP2, 1 G ram. Uso el metodo de
> Select.
> La tabla es de 10 campos, todos de texto. Habria que hacer mas pruebas,pero
> tal vez el problema es con algun tipo de datos en especial.
> Voy a seguir probando, si tengo alguna novedad las comento.
>
> Juan
>
> "Martin Del Angel" <mdangel@dymsasistemas.com> escribió en el mensaje
> news:[email=49d45c79@svctag-j7w3v3j....]49d45c79@svctag-j7w3v3j....[/email]
>> Hola a Todos !
>>
>>
>> Estoy migrando unos DBF's a MySql y me sale este error, ya intente
>> varias cosas , pero sigo con el error: hb_xrealloc can't reallocate memory
>>
>> este es el codigo:
>>
>> nRECS:=::oSQLCLIENTES:RECCOUNT()
>> ::oSQLCLIENTES:GOTOP()
>> ::oProg:nMin :=1
>> ::oProg:nValue:=1
>> ::oProg:nMax:=nRECS
>> X:=0
>> *AppData:oDBCCR:Execute( "START TRANSACTION")
>> DO WHILE !::oSQLCLIENTES:EOF()
>> cNUMERO:=::oSQLCLIENTES:CLIENTE_ID
>>
>> WITH OBJECT ::oMensaje
>> :cText:='Registro '+TOSTRING(::oSQLCLIENTES:RECNO())+ ' DE '
>> TOSTRING(nRECS)
>> :Adjust()
>> :Update()
>> END WITH
>> ::oProg:nValue:=::oProg:nValue+1
>> ::oProg:Update()
>>
>> cSelect := "insert into clientes2 set "
>> cSelect +=
>> "NOMBRECLIENTE="+VALTOSTR(::oSQLCLIENTES:NOMBRECLIENTE)+", "
>> cSelect +=
>> "NOMBRECHOFER="+VALTOSTR(::oSQLCLIENTES:NOMBRECHOFER)+","
>> cSelect +=
>> "FECNACCHOFER="+VALTOSTR(::oSQLCLIENTES:FECNACCHOFER)+","
>> cSelect += "EDADCHOFER="+VALTOSTR(::oSQLCLIENTES:EDADCHOFER)+","
>> cSelect += "DIR1CHOFER="+VALTOSTR(::oSQLCLIENTES:DIR1CHOFER)+","
>> cSelect += "DIR2CHOFER="+VALTOSTR(::oSQLCLIENTES:DIR2CHOFER)+","
>> cSelect +=
>> "CIUDADCHOFER="+VALTOSTR(::oSQLCLIENTES:CIUDADCHOFER)+","
>> cSelect +=
>> "ESTADOCHOFER="+VALTOSTR(::oSQLCLIENTES:ESTADOCHOFER)+","
>> cSelect += "TELCHOFER="+VALTOSTR(::oSQLCLIENTES:TELCHOFER)+","
>> cSelect +=
>> "LICENCIACHOFER="+VALTOSTR(::oSQLCLIENTES:LICENCIACHOFER)
>> AppData:cnn:Execute( cSelect)
>>
>>
>> /*
>> * ::oSQLCLIENTES2:FastAddNew()
>> ::oSQLCLIENTES2:NOMBRECHOFER:=::oSQLCLIENTES:NOMBRECHOFER
>> ::oSQLCLIENTES2:NOMBRECLIENTE:=::oSQLCLIENTES:NOMBRECLIENTE
>> ::oSQLCLIENTES2:FECNACCHOFER:=::oSQLCLIENTES:FECNACCHOFER
>> ::oSQLCLIENTES2:EDADCHOFER:=::oSQLCLIENTES:EDADCHOFER
>> ::oSQLCLIENTES2:DIR1CHOFER:=::oSQLCLIENTES:DIR1CHOFER
>> ::oSQLCLIENTES2:DIR2CHOFER:=::oSQLCLIENTES:DIR2CHOFER
>> ::oSQLCLIENTES2:CIUDADCHOFER:=::oSQLCLIENTES:CIUDADCHOFER
>> ::oSQLCLIENTES2:ESTADOCHOFER:=::oSQLCLIENTES:ESTADOCHOFER
>> ::oSQLCLIENTES2:TELCHOFER:=::oSQLCLIENTES:TELCHOFER
>> ::oSQLCLIENTES2:LICENCIACHOFER:=::oSQLCLIENTES2:LICENCIACHOF ER
>> ::oSQLCLIENTES2:FastUpdate()
>> */
>>
>> nLASTID:=AppData:cnn:QueryValue("SELECT LAST_INSERT_ID()")
>>
>> cSQL:="SELECT * FROM autos WHERE cliente_id="+VALTOSTR(cNUMERO)
>> oDS:=AppData:cnn:Query(cSQL)
>> IF oDS:Reccount()>0
>> DO WHILE oDS:CLIENTE_ID=cNUMERO .AND. !oDS:EOF()
>>
>> cSelect := "insert into autos2 set "
>> cSelect += "CLIENTE_ID="+VALTOSTR(nLASTID)+","
>> cSelect += "ANO="+VALTOSTR(oDS:ANO)+","
>> cSelect += "MARCA="+VALTOSTR(oDS:MARCA)+","
>> cSelect += "MODELO="+VALTOSTR(oDS:MODELO)+","
>> cSelect += "SERIE="+VALTOSTR(oDS:SERIE)+","
>> cSelect += "PLACAS="+VALTOSTR(oDS:PLACAS)
>> AppData:cnn:Execute( cSelect)
>>
>> /*
>> ::oSQLAUTOS2:FastAddNew()
>> ::oSQLAUTOS2:CLIENTE_ID:=nLASTID
>> ::oSQLAUTOS2:ANO:=oDS:FIELDGETBYNAME('Aí‘O')
>> ::oSQLAUTOS2:MARCA:=oDS:FIELDGETBYNAME('MARCA')
>> ::oSQLAUTOS2:MODELO:=oDS:FIELDGETBYNAME('MODELO')
>> ::oSQLAUTOS2:SERIE:=oDS:FIELDGETBYNAME('SERIE')
>> ::oSQLAUTOS2:PLACAS:=oDS:FIELDGETBYNAME('PLACAS')
>> ::oSQLAUTOS2:FastUpdate()
>> */
>>
>>
>> oDS:Skip()
>> ENDDO
>>
>> ENDIF
>>
>> HB_GCALL(.T.) <=== puse este linea , aver si asi ,pero sigue igual
>>
>> oDS:Close()
>> ::oSQLCLIENTES:SKIP()
>>
>> ENDDO
>>
>> Lo usaba primero con FastAddnew() y FastUpdate() y
>>
>> Lo hice al estilo Insert y de todas maneras , es el mismo error.
>>
>> rebasando los 14900 registros procesados sale este error.
>>
>>
>> Saludos....
>>
>>
>>
>>
>
>
Gracias Juan !
Mira deja te cuento la historia:
Primeramente migre los datos de DBFs a MySQL con 204746 registros sin
problema alguno.
Pero ahora cuando leeo precisamente esa tabla de 204,746 y pasarla a
otra tabla tambien de Mysql ,entonces es cuando tengo ese problema:
los campos son normales , ni siquiera hay campos memos , ni nada extraño.
El error ocurre en el registro 14,498 , voy y reviso ese registro y si
fue agregado y en la tabla original , el registro no tiene nada extraño.
Ya le puse que hiciera CommitTrans parciales , libere memoria
lo hice con la funcion que esta abajo, probe con varios bloques de
registros desde 1 hasta 1000 , utilize , cada 100, 200, 300 hasta 1000
y nada.
X++
IF X=1000
X:=0
HB_GCALL(.T.)
AppData:cnn:COMMITTRANS()
ENDIF
en la ayuda de HB_GCALL() dice esto:
Alternatively, garbage collection can be enforced programmatically with
HB_GCAll(.T.). This can be advantageous when there is massive use of
memory during a loop, for exemple, that includes no user input and no
idle state is signalled.
Info
Saludos...
> Martin.
> Acabo de hacer un transpaso de DBF a MySQL varias tablas. A una la cargue
> con 204000 registros y tardo mas de hora y media (es una notebook chica) ,
> pero la paso sin problemas.
> Estoy usando la version Xailer 1.9.8, Xp SP2, 1 G ram. Uso el metodo de
> Select.
> La tabla es de 10 campos, todos de texto. Habria que hacer mas pruebas,pero
> tal vez el problema es con algun tipo de datos en especial.
> Voy a seguir probando, si tengo alguna novedad las comento.
>
> Juan
>
> "Martin Del Angel" <mdangel@dymsasistemas.com> escribió en el mensaje
> news:[email=49d45c79@svctag-j7w3v3j....]49d45c79@svctag-j7w3v3j....[/email]
>> Hola a Todos !
>>
>>
>> Estoy migrando unos DBF's a MySql y me sale este error, ya intente
>> varias cosas , pero sigo con el error: hb_xrealloc can't reallocate memory
>>
>> este es el codigo:
>>
>> nRECS:=::oSQLCLIENTES:RECCOUNT()
>> ::oSQLCLIENTES:GOTOP()
>> ::oProg:nMin :=1
>> ::oProg:nValue:=1
>> ::oProg:nMax:=nRECS
>> X:=0
>> *AppData:oDBCCR:Execute( "START TRANSACTION")
>> DO WHILE !::oSQLCLIENTES:EOF()
>> cNUMERO:=::oSQLCLIENTES:CLIENTE_ID
>>
>> WITH OBJECT ::oMensaje
>> :cText:='Registro '+TOSTRING(::oSQLCLIENTES:RECNO())+ ' DE '
>> TOSTRING(nRECS)
>> :Adjust()
>> :Update()
>> END WITH
>> ::oProg:nValue:=::oProg:nValue+1
>> ::oProg:Update()
>>
>> cSelect := "insert into clientes2 set "
>> cSelect +=
>> "NOMBRECLIENTE="+VALTOSTR(::oSQLCLIENTES:NOMBRECLIENTE)+", "
>> cSelect +=
>> "NOMBRECHOFER="+VALTOSTR(::oSQLCLIENTES:NOMBRECHOFER)+","
>> cSelect +=
>> "FECNACCHOFER="+VALTOSTR(::oSQLCLIENTES:FECNACCHOFER)+","
>> cSelect += "EDADCHOFER="+VALTOSTR(::oSQLCLIENTES:EDADCHOFER)+","
>> cSelect += "DIR1CHOFER="+VALTOSTR(::oSQLCLIENTES:DIR1CHOFER)+","
>> cSelect += "DIR2CHOFER="+VALTOSTR(::oSQLCLIENTES:DIR2CHOFER)+","
>> cSelect +=
>> "CIUDADCHOFER="+VALTOSTR(::oSQLCLIENTES:CIUDADCHOFER)+","
>> cSelect +=
>> "ESTADOCHOFER="+VALTOSTR(::oSQLCLIENTES:ESTADOCHOFER)+","
>> cSelect += "TELCHOFER="+VALTOSTR(::oSQLCLIENTES:TELCHOFER)+","
>> cSelect +=
>> "LICENCIACHOFER="+VALTOSTR(::oSQLCLIENTES:LICENCIACHOFER)
>> AppData:cnn:Execute( cSelect)
>>
>>
>> /*
>> * ::oSQLCLIENTES2:FastAddNew()
>> ::oSQLCLIENTES2:NOMBRECHOFER:=::oSQLCLIENTES:NOMBRECHOFER
>> ::oSQLCLIENTES2:NOMBRECLIENTE:=::oSQLCLIENTES:NOMBRECLIENTE
>> ::oSQLCLIENTES2:FECNACCHOFER:=::oSQLCLIENTES:FECNACCHOFER
>> ::oSQLCLIENTES2:EDADCHOFER:=::oSQLCLIENTES:EDADCHOFER
>> ::oSQLCLIENTES2:DIR1CHOFER:=::oSQLCLIENTES:DIR1CHOFER
>> ::oSQLCLIENTES2:DIR2CHOFER:=::oSQLCLIENTES:DIR2CHOFER
>> ::oSQLCLIENTES2:CIUDADCHOFER:=::oSQLCLIENTES:CIUDADCHOFER
>> ::oSQLCLIENTES2:ESTADOCHOFER:=::oSQLCLIENTES:ESTADOCHOFER
>> ::oSQLCLIENTES2:TELCHOFER:=::oSQLCLIENTES:TELCHOFER
>> ::oSQLCLIENTES2:LICENCIACHOFER:=::oSQLCLIENTES2:LICENCIACHOF ER
>> ::oSQLCLIENTES2:FastUpdate()
>> */
>>
>> nLASTID:=AppData:cnn:QueryValue("SELECT LAST_INSERT_ID()")
>>
>> cSQL:="SELECT * FROM autos WHERE cliente_id="+VALTOSTR(cNUMERO)
>> oDS:=AppData:cnn:Query(cSQL)
>> IF oDS:Reccount()>0
>> DO WHILE oDS:CLIENTE_ID=cNUMERO .AND. !oDS:EOF()
>>
>> cSelect := "insert into autos2 set "
>> cSelect += "CLIENTE_ID="+VALTOSTR(nLASTID)+","
>> cSelect += "ANO="+VALTOSTR(oDS:ANO)+","
>> cSelect += "MARCA="+VALTOSTR(oDS:MARCA)+","
>> cSelect += "MODELO="+VALTOSTR(oDS:MODELO)+","
>> cSelect += "SERIE="+VALTOSTR(oDS:SERIE)+","
>> cSelect += "PLACAS="+VALTOSTR(oDS:PLACAS)
>> AppData:cnn:Execute( cSelect)
>>
>> /*
>> ::oSQLAUTOS2:FastAddNew()
>> ::oSQLAUTOS2:CLIENTE_ID:=nLASTID
>> ::oSQLAUTOS2:ANO:=oDS:FIELDGETBYNAME('Aí‘O')
>> ::oSQLAUTOS2:MARCA:=oDS:FIELDGETBYNAME('MARCA')
>> ::oSQLAUTOS2:MODELO:=oDS:FIELDGETBYNAME('MODELO')
>> ::oSQLAUTOS2:SERIE:=oDS:FIELDGETBYNAME('SERIE')
>> ::oSQLAUTOS2:PLACAS:=oDS:FIELDGETBYNAME('PLACAS')
>> ::oSQLAUTOS2:FastUpdate()
>> */
>>
>>
>> oDS:Skip()
>> ENDDO
>>
>> ENDIF
>>
>> HB_GCALL(.T.) <=== puse este linea , aver si asi ,pero sigue igual
>>
>> oDS:Close()
>> ::oSQLCLIENTES:SKIP()
>>
>> ENDDO
>>
>> Lo usaba primero con FastAddnew() y FastUpdate() y
>>
>> Lo hice al estilo Insert y de todas maneras , es el mismo error.
>>
>> rebasando los 14900 registros procesados sale este error.
>>
>>
>> Saludos....
>>
>>
>>
>>
>
>
Gracias Juan !
Mira deja te cuento la historia:
Primeramente migre los datos de DBFs a MySQL con 204746 registros sin
problema alguno.
Pero ahora cuando leeo precisamente esa tabla de 204,746 y pasarla a
otra tabla tambien de Mysql ,entonces es cuando tengo ese problema:
los campos son normales , ni siquiera hay campos memos , ni nada extraño.
El error ocurre en el registro 14,498 , voy y reviso ese registro y si
fue agregado y en la tabla original , el registro no tiene nada extraño.
Ya le puse que hiciera CommitTrans parciales , libere memoria
lo hice con la funcion que esta abajo, probe con varios bloques de
registros desde 1 hasta 1000 , utilize , cada 100, 200, 300 hasta 1000
y nada.
X++
IF X=1000
X:=0
HB_GCALL(.T.)
AppData:cnn:COMMITTRANS()
ENDIF
en la ayuda de HB_GCALL() dice esto:
Alternatively, garbage collection can be enforced programmatically with
HB_GCAll(.T.). This can be advantageous when there is massive use of
memory during a loop, for exemple, that includes no user input and no
idle state is signalled.
Info
Saludos...
Error Hb_xrealloc can't reallocate memory
Martin Del Angel escribió:
> Hola a Todos !
>
>
> Estoy migrando unos DBF's a MySql y me sale este error, ya intente
> varias cosas , pero sigo con el error: hb_xrealloc can't reallocate memory
>
Yo he tenido problemas similares y se debia principalmente en que la
trasaccion era demasiada grande.
SEUDOCODIGO;
try
Start_Transaction()
nCount := 0
while !eof() // Tu condicion, eof(), etc...
nCount++
if nCount > 1000 // Poner aqui segun el queramso
Commit_Transaction()
nCount := 0
HB_GCALL(.T.) // Quitamos si hay memoria para quitar.
endif
// TU CODIGO
end while
Commit_Transaction()
catch
RollBack_Transaction() // Si algo falla, deshacer los cambios.
end
Este esquema es al final he que implementado, por varios motivos;
1.- NO DEJAS MUERTO EL SERVIDOR con una transaccion de varios miles de
registros.
2.- En caso de fallo en algún punto, sale más a cuenta deshacer 1000
registros que 200000
3.- El 1000, puedes calcularlo en base a cantidad de registros de la dbf
por la cantidad de campos a insertar, mas o menos, regla de 3 simple.
Con esto, seguramente, no tendrás problemas, te lo aseguro, porque una
transaccion de cientos de miles de registros, el servidor de SQLServer,
en este caso, QUEDA TOCADO, y si alguien esta trabajando contra él,
seguramente va a tener muchos problemas de rendimiento.
Saludos
Rafa Carmona
> Hola a Todos !
>
>
> Estoy migrando unos DBF's a MySql y me sale este error, ya intente
> varias cosas , pero sigo con el error: hb_xrealloc can't reallocate memory
>
Yo he tenido problemas similares y se debia principalmente en que la
trasaccion era demasiada grande.
SEUDOCODIGO;
try
Start_Transaction()
nCount := 0
while !eof() // Tu condicion, eof(), etc...
nCount++
if nCount > 1000 // Poner aqui segun el queramso
Commit_Transaction()
nCount := 0
HB_GCALL(.T.) // Quitamos si hay memoria para quitar.
endif
// TU CODIGO
end while
Commit_Transaction()
catch
RollBack_Transaction() // Si algo falla, deshacer los cambios.
end
Este esquema es al final he que implementado, por varios motivos;
1.- NO DEJAS MUERTO EL SERVIDOR con una transaccion de varios miles de
registros.
2.- En caso de fallo en algún punto, sale más a cuenta deshacer 1000
registros que 200000

3.- El 1000, puedes calcularlo en base a cantidad de registros de la dbf
por la cantidad de campos a insertar, mas o menos, regla de 3 simple.
Con esto, seguramente, no tendrás problemas, te lo aseguro, porque una
transaccion de cientos de miles de registros, el servidor de SQLServer,
en este caso, QUEDA TOCADO, y si alguien esta trabajando contra él,
seguramente va a tener muchos problemas de rendimiento.
Saludos
Rafa Carmona
Error Hb_xrealloc can't reallocate memory
Hay un error...;
> if nCount > 1000 // Poner aqui segun el queramso
> Commit_Transaction()
> nCount := 0
> HB_GCALL(.T.) // Quitamos si hay memoria para quitar.
> endif
Lo correcto es
if nCount > 1000 // Poner aqui segun lo que queramos
Commit_Transaction()
Start_Transaction() // ESTE FALTA
nCount := 0
HB_GCALL(.T.) // Quitamos si hay memoria para quitar.
endif
Saludos
Rafa Carmona
> if nCount > 1000 // Poner aqui segun el queramso
> Commit_Transaction()
> nCount := 0
> HB_GCALL(.T.) // Quitamos si hay memoria para quitar.
> endif
Lo correcto es
if nCount > 1000 // Poner aqui segun lo que queramos
Commit_Transaction()
Start_Transaction() // ESTE FALTA
nCount := 0
HB_GCALL(.T.) // Quitamos si hay memoria para quitar.
endif
Saludos
Rafa Carmona
-
- Mensajes: 360
- Registrado: Mié Dic 03, 2008 5:05 am
Error Hb_xrealloc can't reallocate memory
rafa wrote:
> Hay un error...;
>> if nCount > 1000 // Poner aqui segun el queramso
>> Commit_Transaction()
>> nCount := 0
>> HB_GCALL(.T.) // Quitamos si hay memoria para quitar.
>> endif
>
> Lo correcto es
>
> if nCount > 1000 // Poner aqui segun lo que queramos
> Commit_Transaction()
> Start_Transaction() // ESTE FALTA
> nCount := 0
> HB_GCALL(.T.) // Quitamos si hay memoria para quitar.
> endif
>
>
> Saludos
> Rafa Carmona
Rafa Muchas Gracias por tu respuesta !
Implemente lo que mencionas pero sigue igual , el error no es atrapado
y sale de cualquier manera el error Unrecoverable error 9009 con el
mensaje hb_xrealloc can't reallocate memory y aborta el programa.
y como no atrapa el error , por consiguiente no hace el RollBackTrans
Saludos...
> Hay un error...;
>> if nCount > 1000 // Poner aqui segun el queramso
>> Commit_Transaction()
>> nCount := 0
>> HB_GCALL(.T.) // Quitamos si hay memoria para quitar.
>> endif
>
> Lo correcto es
>
> if nCount > 1000 // Poner aqui segun lo que queramos
> Commit_Transaction()
> Start_Transaction() // ESTE FALTA
> nCount := 0
> HB_GCALL(.T.) // Quitamos si hay memoria para quitar.
> endif
>
>
> Saludos
> Rafa Carmona
Rafa Muchas Gracias por tu respuesta !
Implemente lo que mencionas pero sigue igual , el error no es atrapado
y sale de cualquier manera el error Unrecoverable error 9009 con el
mensaje hb_xrealloc can't reallocate memory y aborta el programa.
y como no atrapa el error , por consiguiente no hace el RollBackTrans
Saludos...
Error Hb_xrealloc can't reallocate memory
Mirar que código más curioso y no es mio 
Function Main2()
Local i
Local a_:={}
Local aRecs := {}
for i := 1 to 100000
a_:= RetArray()
aadd( aRecs, a_ )
// ? i
LogDebug( i )
next
Return nil
Static Function RetArray()
Return afill( array( 76 ), '2134565424' )
Con el compilador de C que compila Xailer, BCC55, no pasaréis de las 20000 interacciones del bucle y fijaros en la ocupación y
carga de memoria mediante el Administrador de tareas. Sin embargo con el compilar de C libre de GNU Mingw no hay ningún problema.
¿Para cuándo un Xailer que compile con MinGW y Harbour?
Xavi
Martin Del Angel escribió:
> Hola a Todos !
>
>
> Estoy migrando unos DBF's a MySql y me sale este error, ya intente
> varias cosas , pero sigo con el error: hb_xrealloc can't reallocate memory
>
> este es el codigo:
>
> nRECS:=::oSQLCLIENTES:RECCOUNT()
> ::oSQLCLIENTES:GOTOP()
> ::oProg:nMin :=1
> ::oProg:nValue:=1
> ::oProg:nMax:=nRECS
> X:=0
> *AppData:oDBCCR:Execute( "START TRANSACTION")
> DO WHILE !::oSQLCLIENTES:EOF()
> cNUMERO:=::oSQLCLIENTES:CLIENTE_ID
>
> WITH OBJECT ::oMensaje
> :cText:='Registro '+TOSTRING(::oSQLCLIENTES:RECNO())+ ' DE '
> TOSTRING(nRECS)
> :Adjust()
> :Update()
> END WITH
> ::oProg:nValue:=::oProg:nValue+1
> ::oProg:Update()
>
> cSelect := "insert into clientes2 set "
> cSelect +=
> "NOMBRECLIENTE="+VALTOSTR(::oSQLCLIENTES:NOMBRECLIENTE)+", "
> cSelect +=
> "NOMBRECHOFER="+VALTOSTR(::oSQLCLIENTES:NOMBRECHOFER)+","
> cSelect +=
> "FECNACCHOFER="+VALTOSTR(::oSQLCLIENTES:FECNACCHOFER)+","
> cSelect += "EDADCHOFER="+VALTOSTR(::oSQLCLIENTES:EDADCHOFER)+","
> cSelect += "DIR1CHOFER="+VALTOSTR(::oSQLCLIENTES:DIR1CHOFER)+","
> cSelect += "DIR2CHOFER="+VALTOSTR(::oSQLCLIENTES:DIR2CHOFER)+","
> cSelect +=
> "CIUDADCHOFER="+VALTOSTR(::oSQLCLIENTES:CIUDADCHOFER)+","
> cSelect +=
> "ESTADOCHOFER="+VALTOSTR(::oSQLCLIENTES:ESTADOCHOFER)+","
> cSelect += "TELCHOFER="+VALTOSTR(::oSQLCLIENTES:TELCHOFER)+","
> cSelect +=
> "LICENCIACHOFER="+VALTOSTR(::oSQLCLIENTES:LICENCIACHOFER)
> AppData:cnn:Execute( cSelect)
>
>
> /*
> * ::oSQLCLIENTES2:FastAddNew()
> ::oSQLCLIENTES2:NOMBRECHOFER:=::oSQLCLIENTES:NOMBRECHOFER
> ::oSQLCLIENTES2:NOMBRECLIENTE:=::oSQLCLIENTES:NOMBRECLIENTE
> ::oSQLCLIENTES2:FECNACCHOFER:=::oSQLCLIENTES:FECNACCHOFER
> ::oSQLCLIENTES2:EDADCHOFER:=::oSQLCLIENTES:EDADCHOFER
> ::oSQLCLIENTES2:DIR1CHOFER:=::oSQLCLIENTES:DIR1CHOFER
> ::oSQLCLIENTES2:DIR2CHOFER:=::oSQLCLIENTES:DIR2CHOFER
> ::oSQLCLIENTES2:CIUDADCHOFER:=::oSQLCLIENTES:CIUDADCHOFER
> ::oSQLCLIENTES2:ESTADOCHOFER:=::oSQLCLIENTES:ESTADOCHOFER
> ::oSQLCLIENTES2:TELCHOFER:=::oSQLCLIENTES:TELCHOFER
> ::oSQLCLIENTES2:LICENCIACHOFER:=::oSQLCLIENTES2:LICENCIACHOF ER
> ::oSQLCLIENTES2:FastUpdate()
> */
>
> nLASTID:=AppData:cnn:QueryValue("SELECT LAST_INSERT_ID()")
>
> cSQL:="SELECT * FROM autos WHERE cliente_id="+VALTOSTR(cNUMERO)
> oDS:=AppData:cnn:Query(cSQL)
> IF oDS:Reccount()>0
> DO WHILE oDS:CLIENTE_ID=cNUMERO .AND. !oDS:EOF()
>
> cSelect := "insert into autos2 set "
> cSelect += "CLIENTE_ID="+VALTOSTR(nLASTID)+","
> cSelect += "ANO="+VALTOSTR(oDS:ANO)+","
> cSelect += "MARCA="+VALTOSTR(oDS:MARCA)+","
> cSelect += "MODELO="+VALTOSTR(oDS:MODELO)+","
> cSelect += "SERIE="+VALTOSTR(oDS:SERIE)+","
> cSelect += "PLACAS="+VALTOSTR(oDS:PLACAS)
> AppData:cnn:Execute( cSelect)
>
> /*
> ::oSQLAUTOS2:FastAddNew()
> ::oSQLAUTOS2:CLIENTE_ID:=nLASTID
> ::oSQLAUTOS2:ANO:=oDS:FIELDGETBYNAME('Aí‘O')
> ::oSQLAUTOS2:MARCA:=oDS:FIELDGETBYNAME('MARCA')
> ::oSQLAUTOS2:MODELO:=oDS:FIELDGETBYNAME('MODELO')
> ::oSQLAUTOS2:SERIE:=oDS:FIELDGETBYNAME('SERIE')
> ::oSQLAUTOS2:PLACAS:=oDS:FIELDGETBYNAME('PLACAS')
> ::oSQLAUTOS2:FastUpdate()
> */
>
>
> oDS:Skip()
> ENDDO
>
> ENDIF
>
> HB_GCALL(.T.) <=== puse este linea , aver si asi ,pero sigue igual
>
> oDS:Close()
> ::oSQLCLIENTES:SKIP()
>
> ENDDO
>
> Lo usaba primero con FastAddnew() y FastUpdate() y
>
> Lo hice al estilo Insert y de todas maneras , es el mismo error.
>
> rebasando los 14900 registros procesados sale este error.
>
>
> Saludos....
>
>
>
>
> ------------------------------------------------------------ ------------
>

Function Main2()
Local i
Local a_:={}
Local aRecs := {}
for i := 1 to 100000
a_:= RetArray()
aadd( aRecs, a_ )
// ? i
LogDebug( i )
next
Return nil
Static Function RetArray()
Return afill( array( 76 ), '2134565424' )
Con el compilador de C que compila Xailer, BCC55, no pasaréis de las 20000 interacciones del bucle y fijaros en la ocupación y
carga de memoria mediante el Administrador de tareas. Sin embargo con el compilar de C libre de GNU Mingw no hay ningún problema.
¿Para cuándo un Xailer que compile con MinGW y Harbour?
Xavi
Martin Del Angel escribió:
> Hola a Todos !
>
>
> Estoy migrando unos DBF's a MySql y me sale este error, ya intente
> varias cosas , pero sigo con el error: hb_xrealloc can't reallocate memory
>
> este es el codigo:
>
> nRECS:=::oSQLCLIENTES:RECCOUNT()
> ::oSQLCLIENTES:GOTOP()
> ::oProg:nMin :=1
> ::oProg:nValue:=1
> ::oProg:nMax:=nRECS
> X:=0
> *AppData:oDBCCR:Execute( "START TRANSACTION")
> DO WHILE !::oSQLCLIENTES:EOF()
> cNUMERO:=::oSQLCLIENTES:CLIENTE_ID
>
> WITH OBJECT ::oMensaje
> :cText:='Registro '+TOSTRING(::oSQLCLIENTES:RECNO())+ ' DE '
> TOSTRING(nRECS)
> :Adjust()
> :Update()
> END WITH
> ::oProg:nValue:=::oProg:nValue+1
> ::oProg:Update()
>
> cSelect := "insert into clientes2 set "
> cSelect +=
> "NOMBRECLIENTE="+VALTOSTR(::oSQLCLIENTES:NOMBRECLIENTE)+", "
> cSelect +=
> "NOMBRECHOFER="+VALTOSTR(::oSQLCLIENTES:NOMBRECHOFER)+","
> cSelect +=
> "FECNACCHOFER="+VALTOSTR(::oSQLCLIENTES:FECNACCHOFER)+","
> cSelect += "EDADCHOFER="+VALTOSTR(::oSQLCLIENTES:EDADCHOFER)+","
> cSelect += "DIR1CHOFER="+VALTOSTR(::oSQLCLIENTES:DIR1CHOFER)+","
> cSelect += "DIR2CHOFER="+VALTOSTR(::oSQLCLIENTES:DIR2CHOFER)+","
> cSelect +=
> "CIUDADCHOFER="+VALTOSTR(::oSQLCLIENTES:CIUDADCHOFER)+","
> cSelect +=
> "ESTADOCHOFER="+VALTOSTR(::oSQLCLIENTES:ESTADOCHOFER)+","
> cSelect += "TELCHOFER="+VALTOSTR(::oSQLCLIENTES:TELCHOFER)+","
> cSelect +=
> "LICENCIACHOFER="+VALTOSTR(::oSQLCLIENTES:LICENCIACHOFER)
> AppData:cnn:Execute( cSelect)
>
>
> /*
> * ::oSQLCLIENTES2:FastAddNew()
> ::oSQLCLIENTES2:NOMBRECHOFER:=::oSQLCLIENTES:NOMBRECHOFER
> ::oSQLCLIENTES2:NOMBRECLIENTE:=::oSQLCLIENTES:NOMBRECLIENTE
> ::oSQLCLIENTES2:FECNACCHOFER:=::oSQLCLIENTES:FECNACCHOFER
> ::oSQLCLIENTES2:EDADCHOFER:=::oSQLCLIENTES:EDADCHOFER
> ::oSQLCLIENTES2:DIR1CHOFER:=::oSQLCLIENTES:DIR1CHOFER
> ::oSQLCLIENTES2:DIR2CHOFER:=::oSQLCLIENTES:DIR2CHOFER
> ::oSQLCLIENTES2:CIUDADCHOFER:=::oSQLCLIENTES:CIUDADCHOFER
> ::oSQLCLIENTES2:ESTADOCHOFER:=::oSQLCLIENTES:ESTADOCHOFER
> ::oSQLCLIENTES2:TELCHOFER:=::oSQLCLIENTES:TELCHOFER
> ::oSQLCLIENTES2:LICENCIACHOFER:=::oSQLCLIENTES2:LICENCIACHOF ER
> ::oSQLCLIENTES2:FastUpdate()
> */
>
> nLASTID:=AppData:cnn:QueryValue("SELECT LAST_INSERT_ID()")
>
> cSQL:="SELECT * FROM autos WHERE cliente_id="+VALTOSTR(cNUMERO)
> oDS:=AppData:cnn:Query(cSQL)
> IF oDS:Reccount()>0
> DO WHILE oDS:CLIENTE_ID=cNUMERO .AND. !oDS:EOF()
>
> cSelect := "insert into autos2 set "
> cSelect += "CLIENTE_ID="+VALTOSTR(nLASTID)+","
> cSelect += "ANO="+VALTOSTR(oDS:ANO)+","
> cSelect += "MARCA="+VALTOSTR(oDS:MARCA)+","
> cSelect += "MODELO="+VALTOSTR(oDS:MODELO)+","
> cSelect += "SERIE="+VALTOSTR(oDS:SERIE)+","
> cSelect += "PLACAS="+VALTOSTR(oDS:PLACAS)
> AppData:cnn:Execute( cSelect)
>
> /*
> ::oSQLAUTOS2:FastAddNew()
> ::oSQLAUTOS2:CLIENTE_ID:=nLASTID
> ::oSQLAUTOS2:ANO:=oDS:FIELDGETBYNAME('Aí‘O')
> ::oSQLAUTOS2:MARCA:=oDS:FIELDGETBYNAME('MARCA')
> ::oSQLAUTOS2:MODELO:=oDS:FIELDGETBYNAME('MODELO')
> ::oSQLAUTOS2:SERIE:=oDS:FIELDGETBYNAME('SERIE')
> ::oSQLAUTOS2:PLACAS:=oDS:FIELDGETBYNAME('PLACAS')
> ::oSQLAUTOS2:FastUpdate()
> */
>
>
> oDS:Skip()
> ENDDO
>
> ENDIF
>
> HB_GCALL(.T.) <=== puse este linea , aver si asi ,pero sigue igual
>
> oDS:Close()
> ::oSQLCLIENTES:SKIP()
>
> ENDDO
>
> Lo usaba primero con FastAddnew() y FastUpdate() y
>
> Lo hice al estilo Insert y de todas maneras , es el mismo error.
>
> rebasando los 14900 registros procesados sale este error.
>
>
> Saludos....
>
>
>
>
> ------------------------------------------------------------ ------------
>
-
- Mensajes: 360
- Registrado: Mié Dic 03, 2008 5:05 am
Error Hb_xrealloc can't reallocate memory
xAvi wrote:
> Mirar que código más curioso y no es mio
>
> Function Main2()
> Local i
> Local a_:={}
> Local aRecs := {}
>
> for i := 1 to 100000
> a_:= RetArray()
> aadd( aRecs, a_ )
> // ? i
> LogDebug( i )
> next
>
> Return nil
>
> Static Function RetArray()
>
> Return afill( array( 76 ), '2134565424' )
>
> Con el compilador de C que compila Xailer, BCC55, no pasaréis de las
> 20000 interacciones del bucle y fijaros en la ocupación y carga de
> memoria mediante el Administrador de tareas. Sin embargo con el compilar
> de C libre de GNU Mingw no hay ningún problema.
>
> ¿Para cuándo un Xailer que compile con MinGW y Harbour?
>
> Xavi
>
> Martin Del Angel escribió:
>> Hola a Todos !
>>
>>
>> Estoy migrando unos DBF's a MySql y me sale este error, ya intente
>> varias cosas , pero sigo con el error: hb_xrealloc can't reallocate
>> memory
>>
>> este es el codigo:
>>
>> nRECS:=::oSQLCLIENTES:RECCOUNT()
>> ::oSQLCLIENTES:GOTOP()
>> ::oProg:nMin :=1
>> ::oProg:nValue:=1
>> ::oProg:nMax:=nRECS
>> X:=0
>> *AppData:oDBCCR:Execute( "START TRANSACTION")
>> DO WHILE !::oSQLCLIENTES:EOF()
>> cNUMERO:=::oSQLCLIENTES:CLIENTE_ID
>>
>> WITH OBJECT ::oMensaje
>> :cText:='Registro '+TOSTRING(::oSQLCLIENTES:RECNO())+ ' DE '
>> TOSTRING(nRECS)
>> :Adjust()
>> :Update()
>> END WITH
>> ::oProg:nValue:=::oProg:nValue+1
>> ::oProg:Update()
>>
>> cSelect := "insert into clientes2 set "
>> cSelect +=
>> "NOMBRECLIENTE="+VALTOSTR(::oSQLCLIENTES:NOMBRECLIENTE)+", "
>> cSelect +=
>> "NOMBRECHOFER="+VALTOSTR(::oSQLCLIENTES:NOMBRECHOFER)+","
>> cSelect +=
>> "FECNACCHOFER="+VALTOSTR(::oSQLCLIENTES:FECNACCHOFER)+","
>> cSelect += "EDADCHOFER="+VALTOSTR(::oSQLCLIENTES:EDADCHOFER)+","
>> cSelect += "DIR1CHOFER="+VALTOSTR(::oSQLCLIENTES:DIR1CHOFER)+","
>> cSelect += "DIR2CHOFER="+VALTOSTR(::oSQLCLIENTES:DIR2CHOFER)+","
>> cSelect +=
>> "CIUDADCHOFER="+VALTOSTR(::oSQLCLIENTES:CIUDADCHOFER)+","
>> cSelect +=
>> "ESTADOCHOFER="+VALTOSTR(::oSQLCLIENTES:ESTADOCHOFER)+","
>> cSelect += "TELCHOFER="+VALTOSTR(::oSQLCLIENTES:TELCHOFER)+","
>> cSelect +=
>> "LICENCIACHOFER="+VALTOSTR(::oSQLCLIENTES:LICENCIACHOFER)
>> AppData:cnn:Execute( cSelect)
>>
>>
>> /*
>> * ::oSQLCLIENTES2:FastAddNew()
>> ::oSQLCLIENTES2:NOMBRECHOFER:=::oSQLCLIENTES:NOMBRECHOFER
>> ::oSQLCLIENTES2:NOMBRECLIENTE:=::oSQLCLIENTES:NOMBRECLIENTE
>> ::oSQLCLIENTES2:FECNACCHOFER:=::oSQLCLIENTES:FECNACCHOFER
>> ::oSQLCLIENTES2:EDADCHOFER:=::oSQLCLIENTES:EDADCHOFER
>> ::oSQLCLIENTES2:DIR1CHOFER:=::oSQLCLIENTES:DIR1CHOFER
>> ::oSQLCLIENTES2:DIR2CHOFER:=::oSQLCLIENTES:DIR2CHOFER
>> ::oSQLCLIENTES2:CIUDADCHOFER:=::oSQLCLIENTES:CIUDADCHOFER
>> ::oSQLCLIENTES2:ESTADOCHOFER:=::oSQLCLIENTES:ESTADOCHOFER
>> ::oSQLCLIENTES2:TELCHOFER:=::oSQLCLIENTES:TELCHOFER
>> ::oSQLCLIENTES2:LICENCIACHOFER:=::oSQLCLIENTES2:LICENCIACHOF ER
>> ::oSQLCLIENTES2:FastUpdate()
>> */
>>
>> nLASTID:=AppData:cnn:QueryValue("SELECT LAST_INSERT_ID()")
>>
>> cSQL:="SELECT * FROM autos WHERE cliente_id="+VALTOSTR(cNUMERO)
>> oDS:=AppData:cnn:Query(cSQL)
>> IF oDS:Reccount()>0
>> DO WHILE oDS:CLIENTE_ID=cNUMERO .AND. !oDS:EOF()
>>
>> cSelect := "insert into autos2 set "
>> cSelect += "CLIENTE_ID="+VALTOSTR(nLASTID)+","
>> cSelect += "ANO="+VALTOSTR(oDS:ANO)+","
>> cSelect += "MARCA="+VALTOSTR(oDS:MARCA)+","
>> cSelect += "MODELO="+VALTOSTR(oDS:MODELO)+","
>> cSelect += "SERIE="+VALTOSTR(oDS:SERIE)+","
>> cSelect += "PLACAS="+VALTOSTR(oDS:PLACAS)
>> AppData:cnn:Execute( cSelect)
>>
>> /*
>> ::oSQLAUTOS2:FastAddNew()
>> ::oSQLAUTOS2:CLIENTE_ID:=nLASTID
>> ::oSQLAUTOS2:ANO:=oDS:FIELDGETBYNAME('Aí‘O')
>> ::oSQLAUTOS2:MARCA:=oDS:FIELDGETBYNAME('MARCA')
>> ::oSQLAUTOS2:MODELO:=oDS:FIELDGETBYNAME('MODELO')
>> ::oSQLAUTOS2:SERIE:=oDS:FIELDGETBYNAME('SERIE')
>> ::oSQLAUTOS2:PLACAS:=oDS:FIELDGETBYNAME('PLACAS')
>> ::oSQLAUTOS2:FastUpdate()
>> */
>>
>>
>> oDS:Skip()
>> ENDDO
>>
>> ENDIF
>>
>> HB_GCALL(.T.) <=== puse este linea , aver si asi ,pero sigue igual
>>
>> oDS:Close()
>> ::oSQLCLIENTES:SKIP()
>>
>> ENDDO
>>
>> Lo usaba primero con FastAddnew() y FastUpdate() y
>>
>> Lo hice al estilo Insert y de todas maneras , es el mismo error.
>>
>> rebasando los 14900 registros procesados sale este error.
>>
>>
>> Saludos....
>>
>>
>>
>>
>> ------------------------------------------------------------ ------------
>>
Gracias xAvi por tus comentarios!
Entonces me rindo.....
Error del Compilador
Saludos....
> Mirar que código más curioso y no es mio

>
> Function Main2()
> Local i
> Local a_:={}
> Local aRecs := {}
>
> for i := 1 to 100000
> a_:= RetArray()
> aadd( aRecs, a_ )
> // ? i
> LogDebug( i )
> next
>
> Return nil
>
> Static Function RetArray()
>
> Return afill( array( 76 ), '2134565424' )
>
> Con el compilador de C que compila Xailer, BCC55, no pasaréis de las
> 20000 interacciones del bucle y fijaros en la ocupación y carga de
> memoria mediante el Administrador de tareas. Sin embargo con el compilar
> de C libre de GNU Mingw no hay ningún problema.
>
> ¿Para cuándo un Xailer que compile con MinGW y Harbour?
>
> Xavi
>
> Martin Del Angel escribió:
>> Hola a Todos !
>>
>>
>> Estoy migrando unos DBF's a MySql y me sale este error, ya intente
>> varias cosas , pero sigo con el error: hb_xrealloc can't reallocate
>> memory
>>
>> este es el codigo:
>>
>> nRECS:=::oSQLCLIENTES:RECCOUNT()
>> ::oSQLCLIENTES:GOTOP()
>> ::oProg:nMin :=1
>> ::oProg:nValue:=1
>> ::oProg:nMax:=nRECS
>> X:=0
>> *AppData:oDBCCR:Execute( "START TRANSACTION")
>> DO WHILE !::oSQLCLIENTES:EOF()
>> cNUMERO:=::oSQLCLIENTES:CLIENTE_ID
>>
>> WITH OBJECT ::oMensaje
>> :cText:='Registro '+TOSTRING(::oSQLCLIENTES:RECNO())+ ' DE '
>> TOSTRING(nRECS)
>> :Adjust()
>> :Update()
>> END WITH
>> ::oProg:nValue:=::oProg:nValue+1
>> ::oProg:Update()
>>
>> cSelect := "insert into clientes2 set "
>> cSelect +=
>> "NOMBRECLIENTE="+VALTOSTR(::oSQLCLIENTES:NOMBRECLIENTE)+", "
>> cSelect +=
>> "NOMBRECHOFER="+VALTOSTR(::oSQLCLIENTES:NOMBRECHOFER)+","
>> cSelect +=
>> "FECNACCHOFER="+VALTOSTR(::oSQLCLIENTES:FECNACCHOFER)+","
>> cSelect += "EDADCHOFER="+VALTOSTR(::oSQLCLIENTES:EDADCHOFER)+","
>> cSelect += "DIR1CHOFER="+VALTOSTR(::oSQLCLIENTES:DIR1CHOFER)+","
>> cSelect += "DIR2CHOFER="+VALTOSTR(::oSQLCLIENTES:DIR2CHOFER)+","
>> cSelect +=
>> "CIUDADCHOFER="+VALTOSTR(::oSQLCLIENTES:CIUDADCHOFER)+","
>> cSelect +=
>> "ESTADOCHOFER="+VALTOSTR(::oSQLCLIENTES:ESTADOCHOFER)+","
>> cSelect += "TELCHOFER="+VALTOSTR(::oSQLCLIENTES:TELCHOFER)+","
>> cSelect +=
>> "LICENCIACHOFER="+VALTOSTR(::oSQLCLIENTES:LICENCIACHOFER)
>> AppData:cnn:Execute( cSelect)
>>
>>
>> /*
>> * ::oSQLCLIENTES2:FastAddNew()
>> ::oSQLCLIENTES2:NOMBRECHOFER:=::oSQLCLIENTES:NOMBRECHOFER
>> ::oSQLCLIENTES2:NOMBRECLIENTE:=::oSQLCLIENTES:NOMBRECLIENTE
>> ::oSQLCLIENTES2:FECNACCHOFER:=::oSQLCLIENTES:FECNACCHOFER
>> ::oSQLCLIENTES2:EDADCHOFER:=::oSQLCLIENTES:EDADCHOFER
>> ::oSQLCLIENTES2:DIR1CHOFER:=::oSQLCLIENTES:DIR1CHOFER
>> ::oSQLCLIENTES2:DIR2CHOFER:=::oSQLCLIENTES:DIR2CHOFER
>> ::oSQLCLIENTES2:CIUDADCHOFER:=::oSQLCLIENTES:CIUDADCHOFER
>> ::oSQLCLIENTES2:ESTADOCHOFER:=::oSQLCLIENTES:ESTADOCHOFER
>> ::oSQLCLIENTES2:TELCHOFER:=::oSQLCLIENTES:TELCHOFER
>> ::oSQLCLIENTES2:LICENCIACHOFER:=::oSQLCLIENTES2:LICENCIACHOF ER
>> ::oSQLCLIENTES2:FastUpdate()
>> */
>>
>> nLASTID:=AppData:cnn:QueryValue("SELECT LAST_INSERT_ID()")
>>
>> cSQL:="SELECT * FROM autos WHERE cliente_id="+VALTOSTR(cNUMERO)
>> oDS:=AppData:cnn:Query(cSQL)
>> IF oDS:Reccount()>0
>> DO WHILE oDS:CLIENTE_ID=cNUMERO .AND. !oDS:EOF()
>>
>> cSelect := "insert into autos2 set "
>> cSelect += "CLIENTE_ID="+VALTOSTR(nLASTID)+","
>> cSelect += "ANO="+VALTOSTR(oDS:ANO)+","
>> cSelect += "MARCA="+VALTOSTR(oDS:MARCA)+","
>> cSelect += "MODELO="+VALTOSTR(oDS:MODELO)+","
>> cSelect += "SERIE="+VALTOSTR(oDS:SERIE)+","
>> cSelect += "PLACAS="+VALTOSTR(oDS:PLACAS)
>> AppData:cnn:Execute( cSelect)
>>
>> /*
>> ::oSQLAUTOS2:FastAddNew()
>> ::oSQLAUTOS2:CLIENTE_ID:=nLASTID
>> ::oSQLAUTOS2:ANO:=oDS:FIELDGETBYNAME('Aí‘O')
>> ::oSQLAUTOS2:MARCA:=oDS:FIELDGETBYNAME('MARCA')
>> ::oSQLAUTOS2:MODELO:=oDS:FIELDGETBYNAME('MODELO')
>> ::oSQLAUTOS2:SERIE:=oDS:FIELDGETBYNAME('SERIE')
>> ::oSQLAUTOS2:PLACAS:=oDS:FIELDGETBYNAME('PLACAS')
>> ::oSQLAUTOS2:FastUpdate()
>> */
>>
>>
>> oDS:Skip()
>> ENDDO
>>
>> ENDIF
>>
>> HB_GCALL(.T.) <=== puse este linea , aver si asi ,pero sigue igual
>>
>> oDS:Close()
>> ::oSQLCLIENTES:SKIP()
>>
>> ENDDO
>>
>> Lo usaba primero con FastAddnew() y FastUpdate() y
>>
>> Lo hice al estilo Insert y de todas maneras , es el mismo error.
>>
>> rebasando los 14900 registros procesados sale este error.
>>
>>
>> Saludos....
>>
>>
>>
>>
>> ------------------------------------------------------------ ------------
>>
Gracias xAvi por tus comentarios!
Entonces me rindo.....
Error del Compilador
Saludos....
Error Hb_xrealloc can't reallocate memory
Si pero se ve más claro con el código original, activando la librería gtwin.lib en Xailer .-
<-------------------------------------------->
Function Main2()
Local i
Local a_:={}
Local aRecs := {}
for i := 1 to 100000
a_:= RetArray()
aadd( aRecs, a_ )
? i
next
Return nil
Static Function RetArray()
Return afill( array( 76 ), '2134565424' )
<-------------------------------------------->
Xavi
<-------------------------------------------->
Function Main2()
Local i
Local a_:={}
Local aRecs := {}
for i := 1 to 100000
a_:= RetArray()
aadd( aRecs, a_ )
? i
next
Return nil
Static Function RetArray()
Return afill( array( 76 ), '2134565424' )
<-------------------------------------------->
Xavi
Error Hb_xrealloc can't reallocate memory
Xavi,
Muchas gracias por el ejemplo.
> Con el compilador de C que compila Xailer, BCC55, no pasaréis de las 20000
> interacciones del bucle y fijaros en la ocupación y
> carga de memoria mediante el Administrador de tareas. Sin embargo con el
> compilar de C libre de GNU Mingw no hay ningún problema.
Acabo de hacer unas pruebas, y tienes toda la razón. Pero eso ocurre con la
versión de xHarbour de Xailer 1.9x. He puesto el código en un proyecto
Xailer y lo único que he cambiado ha sido la llamada a LogDebug() por un
label, ya que LogDebug() es lento. Adjunto el proyecto para probarlo.
Con la versión 2.0 lo hace bien. El consumo de memoria llega a algo menos de
200MB justo al llegar al final del bucle, e inmediatamente vuelve a bajar
hasta unos 6MB. Adjunto una captura del momento justo del final del bucle.
Está claro que en esa versión de xHarbour había algún problema con el gestor
de memoria, pero que ha sido corregido en la versión actual.
> ¿Para cuándo un Xailer que compile con MinGW y Harbour?
Tenemos previsto cambiar el compilador de C para ya
Y el paso a
Harbour también lo tenemos previsto, pero tardará más.
Y ya que estás puesto en el tema, me gustaría conocer tu opinión. Voy a
abrir otro hilo de mensajes para hablar sobre el compilador de C.
--
Un saludo,
José F. Giménez
http://www.xailer.com
http://www.xailer.info
Attached files Bugxhb.zip (1.9 KB)Â
Muchas gracias por el ejemplo.
> Con el compilador de C que compila Xailer, BCC55, no pasaréis de las 20000
> interacciones del bucle y fijaros en la ocupación y
> carga de memoria mediante el Administrador de tareas. Sin embargo con el
> compilar de C libre de GNU Mingw no hay ningún problema.
Acabo de hacer unas pruebas, y tienes toda la razón. Pero eso ocurre con la
versión de xHarbour de Xailer 1.9x. He puesto el código en un proyecto
Xailer y lo único que he cambiado ha sido la llamada a LogDebug() por un
label, ya que LogDebug() es lento. Adjunto el proyecto para probarlo.
Con la versión 2.0 lo hace bien. El consumo de memoria llega a algo menos de
200MB justo al llegar al final del bucle, e inmediatamente vuelve a bajar
hasta unos 6MB. Adjunto una captura del momento justo del final del bucle.
Está claro que en esa versión de xHarbour había algún problema con el gestor
de memoria, pero que ha sido corregido en la versión actual.
> ¿Para cuándo un Xailer que compile con MinGW y Harbour?
Tenemos previsto cambiar el compilador de C para ya

Harbour también lo tenemos previsto, pero tardará más.
Y ya que estás puesto en el tema, me gustaría conocer tu opinión. Voy a
abrir otro hilo de mensajes para hablar sobre el compilador de C.
--
Un saludo,
José F. Giménez
http://www.xailer.com
http://www.xailer.info
Attached files Bugxhb.zip (1.9 KB)Â
Error Hb_xrealloc can't reallocate memory
Martín,
en principio no parece que haya nada malo en el código, pero habría que ver
el resto. Si quieres y puedes prepararme un ejemplo lo más pequeño posible
junto con los ficheros y la base de datos necesaria, yo podría hacer las
pruebas que haga falta.
--
Un saludo,
José F. Giménez
http://www.xailer.com
http://www.xailer.info
en principio no parece que haya nada malo en el código, pero habría que ver
el resto. Si quieres y puedes prepararme un ejemplo lo más pequeño posible
junto con los ficheros y la base de datos necesaria, yo podría hacer las
pruebas que haga falta.
--
Un saludo,
José F. Giménez
http://www.xailer.com
http://www.xailer.info