Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Firebird e Interbase (https://www.clubdelphi.com/foros/forumdisplay.php?f=19)
-   -   Error tremendo al restaurar una base de datos con GBAK (https://www.clubdelphi.com/foros/showthread.php?t=57592)

Angel Fernández 21-06-2008 00:38:44

Error tremendo al restaurar una base de datos con GBAK
 
Saludos al foro.

Quisiera ver si algún alma caritativa y de conocimientos profundos sobre firebrid puede ayudarme.

El caso es que tengo una base de datos en FB 2.0 con varias tablas. Una de ellas se llama TIPO_SENSOR y tiene los siguientes campos:

Field Name Type Not Null Def Val Computed
----------------------------------------------------
IDTIPOSENSOR INTEGER Yes
TIPO_LARGO VARCHAR(20) Yes
TIPO CHAR(3) Yes
ACTIVO SMALLINT Yes 1 Description: 0 Inactivo, 1 Activo
IDTABLADATOS INTEGER Yes
IDTIPODATO INTEGER Yes

Y con los siguientes valores:

IDTIPOSENSOR TIPO_LARGO TIPO ACTIVO IDTABLADATOS IDTIPODATO
-------------------------------------------------------------------------------------
0 INDEFINIDO NOT 1 0 0
1 TEMPERATURA EN ºC TEM 1 1 2
2 HUMEDAD HUM 1 1 1
3 LLUVIA LLU 1 2 4
4 ENCHARCAMIENTO ENC 1 2 5
5 TEMPERATURA EN ºK TEK 1 1 3

Sólo estos 6 valores.

Si hago un backup con el siguiente comando:

"c:\Archivos de programa\Firebird_2_0\bin\gbak.exe" -b -v -t -user SYSDBA -password masterkey "Base.fdb" "Base.fbk"

me lo hace correctamente, sin ningún mensaje de error.

El problema viene al intentar hacer restore. Utilizo este comando:

"c:\Archivos de programa\Firebird_2_0\bin\gbak.exe" -c -v -user SYSDBA -password masterkey "Base.fbk" "Base_res.fdb"

y me lanza este error:

.....
gbak:restoring data for table TIPO_SENSOR
gbak: ERROR:validation error for column IDTIPODATO, value "*** null ***"
gbak: ERROR: warning -- record could not be restored
gbak:Exiting before completion due to errors

y termina sin restaurar la base de datos.

Lo que yo entiendo es que la columna IDTIPODATO tiene un valor null y esto entra en contradicción con la definición que no acepta valores null. Sin embargo, los valores de los campos son los que he puesto arriba y NO HAY NINGUNO NULL.

Esto me está causando un tremendo desbarajuste porque no puedo restaurar la base de datos por un dato "fantasma" que no sale en ningún listado. Me veo obligado a comprimir la base de datos fdb en un rar cuando no estoy conectado.

Utilizo Delphi 7 y FB 2.0 ¿Pruebo con FB 2.1? ¿Alguien sabe qué pasa con ese datos fantasma null?

Gracias por adelantado.

eduarcol 21-06-2008 01:17:46

has probado dehabilitando las transacciones del Limbo...

Angel Fernández 21-06-2008 09:40:59

Muchísimas gracias eduarcol, me has librado de una buena; eres mi padre.

Efectivamente, con el siguiente comando lo restaura sin problemas:

"c:\Archivos de programa\Firebird_2_0\bin\gbak.exe" -c -v -l -user SYSDBA -password masterkey "Base.fbk" "Base_res.fdb"

La opción -l (ele, no i) desactiva no se qué del limbo y así sí que funciona.

¿Qué son las transacciones del limbo? (Por aprenderlo)

Reitero mi agradecimiento, eduarcol. Era una cosa que me tenía muy preocupado.

eduarcol 21-06-2008 14:40:29

tengo entendido que son aquellas transacciones las cuales pasan la primera etapa de un commit en dos fases, por lo general se da con el commit retain.

En resumen es basura de la BD, se recomienda ese tipo de respaldo para limpiarlo.


La franja horaria es GMT +2. Ahora son las 01:53:16.

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