![]() |
Interbase server crash!
Tengo una aplicación donde intento insertar un blob, en este caso una imagen; al intentar insertar archivos mayores a 64 Kb aprox. el servidor de interbase se congela totalmente y ya no responde si quiera el administrador en este caso el IBExpert; solo cuando finalizo la aplicacion el servidor de interbase regresa.:(
Ahora bien ya lo he probado con la version de interbase 7.5.1 y la 2009 pero el resultado es el mismo; la version de Delphi que utilizo es Delphi 2007 .Net, el mismo StoredProcedure en la base de datos lo pruebo desde el IBExpert y funciona perfectamente; pero cuando mi aplicacion lo intenta hacer el servidor de Interbase ya no responde. Les agradecería su valioso apoyo, gracias. La tabla es la siguiente: CREATE TABLE TAB_IMG ( IDE_IMG VARCHAR(20) NOT NULL, IDE_INS_USR_SIS VARCHAR(10) NOT NULL, IDE_UPD_USR_SIS VARCHAR(10), NUM_REG_CLI VARCHAR(15), NUM_REG_PROS VARCHAR(15), IMG_BLOB BLOB SUB_TYPE -1 SEGMENT SIZE 80, NOM_COM_IDE VARCHAR(70) COLLATE ES_ES, FEC_NAC_IDE DATE, IDE_TIP_IMG INTEGER, EXT_FIL_IMG VARCHAR(10) NOT NULL, EXT_FIL_COM VARCHAR(10), ); El Código en el StoredProcedure es el siguiente: CREATE PROCEDURE SP_INSERT_IMAGE_DIG ( i_ide_ins_usr_sis varchar(10), i_num_reg_cli varchar(15), i_img_blob blob sub_type 0 segment size 80, i_ide_tip_img integer) as begin insert into tab_img(IDE_INS_USR_SIS, NUM_REG_CLI, IMG_BLOB, IDE_TIP_IMG, EXT_FIL_IMG, EXT_FIL_COM, FIL_SZ_ORI, FIL_SZ_COM) values (:i_ide_ins_usr_sis, :i_num_reg_cli, :i_img_blob, :i_ide_tip_img); end En Delphi lo acceso desde un componente llamado IBStroredProc: with SProc do begin StoredProcName:= 'SP_INSERT_IMAGE_DIG'; Prepare; ParambyName('I_IDE_INS_USR_SIS').AsString := 'USR-1-A'; ParambyName('I_NUM_REG_CLI').AsString := 'a'; ParambyName('I_IMG_BLOB').LoadFromFile(inputFile,ftBlob); ParambyName('I_IDE_TIP_IMG').AsInteger := 1; ParambyName('I_EXT_FIL_IMG').AsString := 'a'; ParambyName('I_EXT_FIL_COM').AsString := 'a'; ParambyName('I_FIL_SZ_ORI').AsInteger := 1; ParambyName('I_FIL_SZ_COM').AsInteger := 1; ExecProc; <----------------------------------------------Exception! stsMemo.Lines.Add('Enviando el archivo: '+inputFile); Trans.Commit; end; |
Intenta hacer un backup de la base y luego un restore con el "Page Size" más grande.
En algún lugar he leido que el tamaño de los blobs depende de esto. |
Aquí está lo leido
Cita:
|
Hola, ¿te has fijado que declaras de distinta forma el campo imagen de la tabla y la variable del procedimiento?
Tabla -> IMG_BLOB BLOB SUB_TYPE -1 SEGMENT SIZE 80 Procedimiento ->i_img_blob blob sub_type 0 segment size 80 |
Gracias duilioisola, he verificado the page size de mi base de datos y esta es de: 16384; actualmente tengo otra base de solo 4096, igual en interbase y con una palicación desarrollada en delphi 2005 win32 no tiene problemas con los blobs; pudiera ser que el page size es muy grande?; con respecto al tamaño del blob lo habia leido pero en la declaración del Stored en interbase no hayo ese detalle, y es que es curioso porque precisamente solo me permite enviar archivitos pequeños con los demás llegan pedazos creo yo porque despues no se pueden visualizar o solo basura.:(
También agradezco el gran apunte de defcon1_es; he corregido la declaracaión pero sigue el mismo problema.:confused: |
| La franja horaria es GMT +2. Ahora son las 05:40:28. |
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