Jump to content


Photo

Mensaje de error al intentar abrir una db *.fdb


  • Please log in to reply
11 replies to this topic

#1 FGarcia

FGarcia

    Advanced Member

  • Miembro Platino
  • PipPipPip
  • 687 posts
  • LocationMéxico

Posted 15 October 2014 - 01:12 PM

Hola !!

Estoy probando mi aplicacion en una maquina que carece de version alguna de Firebird. Mi app la desarrolle con el server normal y la ejecuto en la otra maquina con la version embedded y me aparece este error

[Window Title]
MiAplicacion

[Content]
¡ERROR conectando con la base de datos!

Mensaje de ERROR:

unsupported on-disk structure for file E:\MIAPLICACION\DATA\DUCAP.FDB; found 11.2, support 11.1

[OK]


No tengo idea de que sucede, ya verifique que ambas versiones de FB sean iguales..

Alguna idea pitonisos del oraculo?
  • 0

#2 jdepaz

jdepaz

    Advanced Member

  • Miembros
  • PipPipPip
  • 264 posts
  • LocationMedellín Colombia

Posted 15 October 2014 - 02:16 PM

Buscando en la red sobre:

https://www.google.c...sm=122&ie=UTF-8


Encontré esto:

http://www.activedel...cea74ac77e56ab4


Saludos
  • 0

#3 FGarcia

FGarcia

    Advanced Member

  • Miembro Platino
  • PipPipPip
  • 687 posts
  • LocationMéxico

Posted 15 October 2014 - 03:36 PM

Pues no...  : : 8o|

Ya confirme que ambas versiones de fbclient sean la misma.

fbclient.dll en maquina desarrollo es 2.5.3.26778

fbembed.dll (renombrada a fbclient.dll) es 2.5.3.26778 (maquina de ejecucion)

Ya realiza un BKP y un restore (con IBExpert) el error continua

Cree una BD nueva, se mantiene el error.

:cry: :sad:
  • 0

#4 Delphius

Delphius

    Advanced Member

  • Administrador
  • 6295 posts
  • LocationArgentina

Posted 15 October 2014 - 04:30 PM

A ver, veamos... On Disk Structure es una especie de número de versión interna que posee firebird para determinar la compatibilidad de archivos fdb y la posibilidad de hacer backup/restore de una a otra.

La descripción del error da a entender que la base de datos ha sida desarrollada en una versión más actual (creo que por On-Disk Structure 11.2 es la 2.5 de Firebird) mientras que los componentes y/o bibliotecas que estás empleando desde tu aplicación corresponden a uno inferior (2.1 tal vez). La otra posibilidad es que inicialmente la base de datos haya sido desarrollada en una versión anterior y no se haya realizado un backup/restore para "portarla" al momento de efectuar la actualización a una nueva versión.

Además tengan en cuenta que no basta que que se tenga la misma versión de fbclient si en realidad resulta ser que los componentes de acceso no están preparados para soportar dicha versión. Más aún, de nada sirviría también que se haga un backup/restore con una versión nueva de firebird si en realidad inicialmente era de una inferior. El error es claro: La base de datos de alguna manera tiene un On-Disk Structure (ODS) 11.2 mientras que se espera soportar una de 11.1.

El otro escenario es que en realidad no hayas copiado la versión de fbclient apropiada.

La solución que veo, aunque es radical, es que extraigas la metadata de la base de datos. Instales la versión de Firebird correspondiente a la ODS 11.1 y generes la base de datos con esta. Eso debiera de bastar para solucionar el error.

Saludos,



  • 0

#5 FGarcia

FGarcia

    Advanced Member

  • Miembro Platino
  • PipPipPip
  • 687 posts
  • LocationMéxico

Posted 15 October 2014 - 04:47 PM

8o| 8o| 8o|


Resulta que la maquina donde estoy probando alguien le instalo un demo de un programa que usa FB 2.1 y el usuario ni enterado estaba!!!

Lo que hice fue detener el servicio de firebird que se estaba ejecutando y correr mi app (fb embedded) ahora el error que me aparece es:

[Window Title]
MiAplicacion

[Content]
¡ERROR conectando con la base de datos!

Mensaje de ERROR:

Unable to complete network request to host "127.0.0.1".
Failed to establish a connection.

[OK]


Ya verifique con otra maquina que no tiene FB y el mensaje es el mismo.

Alguna sugerencia?
  • 0

#6 Fenareth

Fenareth

    Advanced Member

  • Administrador
  • 3486 posts
  • LocationMexico City

Posted 15 October 2014 - 04:50 PM

Para embedded es necesario especificarle una ruta de conexión ?

Saludox ! :)
  • 0

#7 Delphius

Delphius

    Advanced Member

  • Administrador
  • 6295 posts
  • LocationArgentina

Posted 15 October 2014 - 05:04 PM

El problema es que si alguien instaló Firebird ya en ese equipo, aún cuando en teoría Firebird ya es capaz de soportar varias instancias de diferentes versiones, no es aconsejable tener en un mismo equipo instalado una embebida y una "completa".
Extrañamente la mezcla de completa con embebida no se llevan bien (en algún lado lo he leído. Yo nunca hice la prueba), aunque se que hay una manera de solucionarlo. No la recuerdo ahora. Estoy tan oxidado, el estar alejado por tanto tiempo del desarrollo y de Firebird ha hecho que pierda práctica.

El error pareciera ser que la aplicación está intentando emplear la versión 2.1 que le han instalado. Aunque no estoy seguro del todo.
Como no he empleado nunca la versión embebida no estoy completamente seguro.

EDITO Y AGREGO: Recuerda que para la versión embebida junto con tu aplicación deben estar todos los archivos que hacen a Firebird en el mismo directorio. Se puede instalar en un directorio aparte, diferente, pero para ello debes modificar el .conf y establer allí el directorio. Recuerda que SIEMPRE debe estar con tu exe el fbembed.dll.

Saludos,


  • 0

#8 FGarcia

FGarcia

    Advanced Member

  • Miembro Platino
  • PipPipPip
  • 687 posts
  • LocationMéxico

Posted 15 October 2014 - 07:02 PM

Como ya no tengo acceso a las maquinas que estaba usando para pruebas, he desintalado mi version de FB y copiado en C:\Miapp todos los archivos para ejecutar directamente con la version embedded (todo esta como dice el manual que debe de estar).....

:cry:  sigue el mensaje de error  :cry:

En el firewall ya le di acceso a MiApp.

¿Debo de modificar algo en firebird.conf?

Nunca he modificado ese archivo, siempre he copiado la version embedded directamente y sin problemas. Es la primera vez.


  • 0

#9 Delphius

Delphius

    Advanced Member

  • Administrador
  • 6295 posts
  • LocationArgentina

Posted 15 October 2014 - 07:44 PM

Como ya no tengo acceso a las maquinas que estaba usando para pruebas, he desintalado mi version de FB y copiado en C:\Miapp todos los archivos para ejecutar directamente con la version embedded (todo esta como dice el manual que debe de estar).....

:cry:  sigue el mensaje de error  :cry:

En el firewall ya le di acceso a MiApp.

¿Debo de modificar algo en firebird.conf?

Nunca he modificado ese archivo, siempre he copiado la version embedded directamente y sin problemas. Es la primera vez.


¿Cuál error amigo? ¿El de ODS o de conexión al localhost?
¿Desinstalaste todas las versiones de Firebird? ¿También las dll fbClient de System32? Recuerda que el desinstalador no elimina todo (y no estoy seguro de si el dll de system32 está en la lista de los que elimina). Hay un par de archivos que deja, como ser el .conf por ejemplo, para poder configurar una nueva instalación con la configuración previa.

Asegúrate de que efectivamente haz eliminado todo de Firebird, incluso por las dudas hasta diría que las entradas del registro. Eso debiera de bastar para poder funcionar la embebida. No es necesario que modifiques el .conf, normalmente no es necesario ya que viene con los datos por defecto más comunes y deseables.
Si dices que ya antes trabajaste con la embebida te creo.

Saludos,
  • 0

#10 Sergio

Sergio

    Advanced Member

  • Moderadores
  • PipPipPip
  • 1092 posts
  • LocationMurcia, España

Posted 16 October 2014 - 02:35 AM

La version embeded no acepta conexiones a bases de datos remotas, solo ficheros locales, por eso la IP le esta molestando y se niega en redondo a intentar resolver una IP, aunque sea la 127.0.0.1 o localhost, y también por esto el firewall no pinta nada en tu problema.

Prueba a quitarle el 127.0.0.1 y usa solo la ruta del fichero:

No funciona: "localhost:c:\bd.fdb"
Si funciona: "c:\bd.fdb"

Respecto del On Disk Structure no tiene nada que ver con fbclient.dll, tiene que ver con la versión interna del fichero (depende de la versión de FB server con la que se creo) y la que espera la version de FB server que estas usando ahora.

Si tenias un FB instalado, ese es el que se utilizará para acceder y el fichero necesita estar creado con un FB server igual o inferior al instalado.

Esto se resuelve haciendo un backup-restore usando el FB server más moderno, asi re-escribes el fichero con la estructura moderna (que no es luego legible desde FB servers más antiguos, pero si más modernos).


  • 0

#11 Delphius

Delphius

    Advanced Member

  • Administrador
  • 6295 posts
  • LocationArgentina

Posted 16 October 2014 - 10:43 AM

Respecto del On Disk Structure no tiene nada que ver con fbclient.dll, tiene que ver con la versión interna del fichero (depende de la versión de FB server con la que se creo) y la que espera la version de FB server que estas usando ahora.

Si tenias un FB instalado, ese es el que se utilizará para acceder y el fichero necesita estar creado con un FB server igual o inferior al instalado.

Esto se resuelve haciendo un backup-restore usando el FB server más moderno, asi re-escribes el fichero con la estructura moderna (que no es luego legible desde FB servers más antiguos, pero si más modernos).


Si el error dice que se ha encontrado ODS 11.2 y se esperaba 11.1 quiere decir que en todo caso debe pasarse a una versión anterior Sergio.
Lamentablemente para ese caso lo más seguro es justamente extraer la metadata y generar una nueva base de datos con la versión adecuada a la ODS 11.1.
No estoy seguro de si es posible hacer un backup & restore de una versión mayor a una menor. A la inversa si lo es.

Saludos,
  • 0

#12 FGarcia

FGarcia

    Advanced Member

  • Miembro Platino
  • PipPipPip
  • 687 posts
  • LocationMéxico

Posted 16 October 2014 - 11:01 AM

Hola!

Como dije anteriormente hice un BackUp y un Restore y el error de ODS seguia, Cree una nueva bd en la version (build) anterior de 2.5 y el error continuaba. Posteriormente me di cuenta que en la maquina de prueba estaba instalada una version 2.1 de FB y con eso supe que el error ODS era cuestion de versiones.

Entonces el error cambio a que no era posible realizar la conexion a '127.0.0.1'

Elimine cualquier referencia a un Server tal y como lo dice Sergio y todo funciona ok.



delphi
  1. procedure TdmUniConexion.DataModuleCreate(Sender: TObject);
  2. begin
  3.   uConexion.ProviderName := 'InterBase';
  4.   //uConexion.Server := '127.0.0.1';
  5.   uConexion.SpecificOptions.Add('InterBase.Charset=UTF8');
  6.   uConexion.SpecificOptions.Add('InterBase.ClientLibrary=fbclient.dll');
  7.   uConexion.Database := GetCurrentDir + '\Data\' + NombreBD;
  8. end;



Estoy usando UniDAC de DevArt, Delphi XE2 Win 7 64
  • 0




IP.Board spam blocked by CleanTalk.