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)
-   -   al insert o Update se corrompe la base firerbird (https://www.clubdelphi.com/foros/showthread.php?t=51081)

jgutti 05-12-2007 14:52:50

al insert o Update se corrompe la base firerbird
 
Hola al foro, utilizo firebird + php, al insertar o actulizar registros estos se graban correctamente en la base de datos pero esta se corrompte, el script es el sgte:

Código PHP:

$db=ibase_connect("localhost:/data/e_comer.gdb","user","pas");
if (!
$db) die ("error connecting to database");
$tr=ibase_trans($db,IBASE_COMMITTED,IBASE_REC_VERSION,IBASE_NOWAIT); 
  
$sql ="INSERT INTO pagos_web(EMPRESA,FACTURA,FECHA,monto)
               values(
$emps,$fact,],'".formato_guarda_fecha($f_emi)."',$monto)";
$result ibase_query($_SESSION['tr'],$sql);
   if (!
$resultdatabase_error ("Error al Ingresar el Pago"$_SESSION['tr']);
  
ibase_commit_ret($_SESSION['tr']); 

- ¿que estoy haciendo mal para que se producto este problema?

saludos

jgutti

jhonny 05-12-2007 17:45:59

Por favor, utiliza las etiquetas PHP para que tu codigo se vea mejor y especificanos ¿Que quieres decir con que se corrempe la base de datos?, ¿acaso se daña toda la BD?, no creo.

Gabo 05-12-2007 19:10:30

Es que a quién se le ocurre utilizar una base de datos que no es seria.... :D :D :D

Delfino 05-12-2007 19:52:13

Verifica si pasa esto pq el disco duro no esta OK..

jgutti 05-12-2007 21:06:48

Jhony, la tabla en la cual estoy grabando los registros se corrompe
Código PHP:

$db=ibase_connect("localhost:/data/e_comer.gdb","user","pas");
if (!
$db) die ("error connecting to database");
$tr=ibase_trans($db,IBASE_COMMITTED,IBASE_REC_VERSION,IBASE_NOWAIT); 
$sql ="INSERT INTO pagos_web(EMPRESA,FACTURA,FECHA,monto)
values(
$emps,$fact,],'".formato_guarda_fecha($f_emi)."',$monto)";
$result ibase_query($_SESSION['tr'],$sql);
if (!
$resultdatabase_error ("Error al Ingresar el Pago"$_SESSION['tr']);
ibase_commit_ret($_SESSION['tr']); 

2.- que sorpresa me causo el que firebird no es una base de datos serias, si esto es correcto entonces que base de datos puedo utilizar (interbase 6.0 o superior, que versión de firebird o definitivamente migrar a mysql)
- porque lo de sorpresa, llevo años utilizando interbase 6.0 y nunca he tenido problemas.
3.- el problema puede producirse porque la misma base de datos se utiliza en la red local bajo windows 2003 server con interbase manager y en linux+apache+php con firebird 2.0 en la web

4.- en la red local jamas he tenido problemas
- en linux+apache+php con firebird 2.0 en la web, no he tenido problemas
5.- el problema es al combinar ambas plataformas sobre la misma base de datos

jhonny 05-12-2007 21:18:53

El FireBird si es una base de datos sería, si lees el hilo que cito Gabo entenderas que si lo es...

Recuerda poner las etiquetas PHP, por favor!!!

Editare tu Post para que veas tu codigo en codigo PHP y aprendas a aplicar el asunto...

En cuanto a que se corrompe la tabla o la BD no nos estas diciendo nada, ¿Que es eso de que se corrompe?, ¿Hay algun error?, ¿Como estas tan seguro de que se corrompe?, explicanos eso.

jachguate 06-12-2007 03:46:25

Cita:

Empezado por jgutti (Mensaje 250755)
5.- el problema es al combinar ambas plataformas sobre la misma base de datos

Definitivamente, independientemente de la plataforma, no podes abrir a la vez un archivo desde dos servidores distintos.

Además de eso, al menos hasta la versión 1.5, no era posible utilizar una base de datos creada en windows directamente en linux, ni viceversa. El procedimiento correcto es crear un backup de la base de datos en la plataforma donde fue creada, y restaurar dicho backup, cuyo formato si es transportable, en la otra plataforma.

Cómo he estado acostumbrado a trabajar así, olvidé ya si en fb 2.0 eso cambió.

Hasta luego.

;)

jgutti 06-12-2007 13:54:11

1.- El error que se produce con una tabla en particular es:
Internal dgs software consistency check (decompression overran buffer (179))

2.- Para evitar utilizar la base en dos plataformas diferentes cual seria la instalación correcta para que la base de datos firebird se utilize en:
- Accesando en forma simultanea en la Red local desde una aplicación delphi y via web accediendo con php.

saludos, jgutti

jgutti 06-12-2007 13:57:17

correccción el mensaje es:
Internal gds software consistency check (decompression overran buffer (179))

Casimiro Noteví 06-12-2007 20:21:26

Cita:

Empezado por jgutti (Mensaje 250905)
[..]2.- Para evitar utilizar la base en dos plataformas diferentes cual seria la instalación correcta para que la base de datos firebird se utilize en:
- Accesando en forma simultanea en la Red local desde una aplicación delphi y via web accediendo con php.
saludos, jgutti

Un sólo servidor de base de datos , simplemente.

Los usuarios de la red local acceden como es habitual, ejemplo: 192.168.1.1:/home/datos/datosempresa.fdb

Los usuarios de internet acceden al servidor web y este a su vez conecta al servidor de bases de datos igualmente: 192.168.1.1:/home/datos/datosempresa.fdb

Pero todos a un sólo servidor firebird.

rastafarey 18-12-2007 21:39:57

Resp
 
No puedo decir de quien sea exactemente el error. Pero creo que el problema es de la libreria de acceso de php. Si mas no recuerdo esta escrita para interbase 6.0. Mira a mi me estaba pasando lo mismo y no se corrompe la base de datos si no que para al servidor(en mi caso). Yo lo solucione. Realizando una conexion persitente y cerrando al finalizar el script y usando un tamaño de gania 2 ala x -1. Parece raro pero asi me paso usaba un taño de 4096 y me daban una cantida increible de peos puse una paginacion de 4095 o menor y me dejo de dar problemas. Ahora decirte cual es problema exacto no lo se.


La franja horaria es GMT +2. Ahora son las 23:02:35.

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