PDA

Ver la Versión Completa : Error al Insertar muchos registros


GustavoCruz
19-11-2013, 16:16:54
Hola amigos del foro, necesito de vuestra ayuda.
En una tabla como esta
CREATE TABLE PACIENTES (
TIPODOCUMENTO T15 NOT NULL /* T15 = VARCHAR(15) */,
NUMERODOCUMENTO CODIGOTEXTO NOT NULL /* CODIGOTEXTO = VARCHAR(20) NOT NULL */,
APELLIDO1 T30 /* T30 = VARCHAR(30) */,
APELLIDO2 T30 /* T30 = VARCHAR(30) */,
NOMBRE1 T30 /* T30 = VARCHAR(30) */,
NOMBRE2 T30 /* T30 = VARCHAR(30) */,
NOMBRECOMPLETO T120 /* T120 = VARCHAR(120) */,
SEXO T20 /* T20 = VARCHAR(20) */,
NACIMIENTO FECHAS /* FECHAS = DATE default 'now' */,
EPSCODIGO CODIGOTEXTO /* CODIGOTEXTO = VARCHAR(20) NOT NULL */,
MUNCODIGO CODIGOTEXTO /* CODIGOTEXTO = VARCHAR(20) NOT NULL */,
DEPCODIGO CODIGOTEXTO /* CODIGOTEXTO = VARCHAR(20) NOT NULL */,
TIPOAFILIADO T20 /* T20 = VARCHAR(20) */,
ZONA T15 /* T15 = VARCHAR(15) */,
DIRECCION T120 /* T120 = VARCHAR(120) */,
TELEFONOS T60 /* T60 = VARCHAR(60) */,
CLASEEPS CODIGONUMERICO /* CODIGONUMERICO = INTEGER NOT NULL */,
ESCOLARIDAD T120 /* T120 = VARCHAR(120) */,
OCUPACION T15 /* T15 = VARCHAR(15) */,
ESTADOCIVIL T30 /* T30 = VARCHAR(30) */
);




/******************************************************************************/
/*** Primary Keys ***/
/******************************************************************************/

ALTER TABLE PACIENTES ADD PRIMARY KEY (TIPODOCUMENTO, NUMERODOCUMENTO);
Le inserto 85000 registros; y una vez terminada la inserción y quiero ver los datos, me lanza este error:

execution caused by a system error that precludes successful execution of subsequent statements.
Database file appears corrupt (C:\MIS DOCUMENTOS\SYSFARMA\REPORTES\BASE.FDB).
Wrong page type.
Page 1862 is of wrong type (expected 5, found 7).

SQL Code: -902
IB Error Number: 335544335

Qué debo hacer?
La definición de la base de datos es esta
SET SQL DIALECT 3;

SET NAMES UTF8;

CREATE DATABASE 'localhost:C:\Mis documentos\SysFarma\Reportes\BASE.FDB'
USER 'SYSDBA' PASSWORD 'masterkey'
PAGE_SIZE 16384
DEFAULT CHARACTER SET UTF8 COLLATION UTF8;

Gracias por vuestra ayuda

marcoszorrilla
19-11-2013, 19:39:24
No dices como los insertas, si con un insert de SQL o con código desde Delphi, en este último caso yo utilizo un contador que por ejemplo, provoca un "commit" cada 1000 registros

Un Saludo.

GustavoCruz
20-11-2013, 03:36:25
Hola marcoszorrilla, inicialmente los hice con un commit cada 1000 registros desde una aplicación que hice para el caso específico de la tabla, y me salió el error. Así que descargué el ems ib manager y cargué los registros y nuevamente me salió el error, hice varias copias de la base de datos para hacer las pruebas.
Normalmente el error ocurre, cuando quiero recorrer la tabla, en el registro 57602.

No se qué hacer necesito ayuda. Como dato curioso tengo otra tabla, en la misma base, a la que le he insertado 180000 registros y todo está normal

Gracias por vuestro tiempo

Casimiro Notevi
20-11-2013, 12:51:48
Está dañada, prueba con un backup/restore

pacopenin
20-11-2013, 12:56:51
Prueba lo que dice Casimiro.

GustavoCruz
20-11-2013, 16:35:43
Hola amigos del foro, efectivamente está dañada... me quise conectar a ella, y me aparece el error que dice que el archivo está corrupto:(
y ahora quién podrá ayudarme!!! :confused:

He leído una serie de archivos que encontré en internet, y los otros hilos que tratan sobre fdb corruptas, pero no nada de nada, probé con backup/restore y el problema persiste...

Gracias por vuestro tiempo

Casimiro Notevi
20-11-2013, 17:36:18
Primero de todo, con todas las conexiones cerradas, haces una copia y la guardas, tal y como está, dañada, y no la toques, trabajas con la copia.

Y después, paso a paso y nos informa de los mensajes, es que eso de "probé, pero nada", no nos dice nada :confused:

GustavoCruz
20-11-2013, 17:44:01
Muchísimas gracias Camisiro, haré como me indicas y luego les comento...

pacopenin
20-11-2013, 17:48:53
Hay bastantes hilos que analizan posibles soluciones como éste hilo (http://www.clubdelphi.com/foros/showthread.php?t=62593). En las sugerencias que aparecerán al final de la página hay más. Y haz caso a lo que dice Casimiro: siempre con una copia, y ve diciendo los mensajes que salen con cada prueba. Y suerte.

GustavoCruz
20-11-2013, 20:03:40
Hola, tomé una de las copias que tenía y utilizando una herramienta del ems ibmanager intenté reparar la base, luego hice un backup/restore que para mi salud mental todo salió bien; pero no me quiero quedar con esta solución, porque me asusta el pensar que pueda ocurrir nuevamente.

Gracias por vuestro tiempo...

Nota: no puede solucionar el problema por consola y quisiera aprender a hacerlo. Si alguien me quiera hacer el favor y agradecería mucho...

De nuevo mil gracias por vuestro tiempo

ecfisa
20-11-2013, 20:26:58
Nota: no puede solucionar el problema por consola y quisiera aprender a hacerlo. Si alguien me quiera hacer el favor y agradecería mucho
Hola Gustavo.

Te pongo unos enlaces que tratan sobre lo que solicitas:

Firebird Backup & Restore Utility (http://www.firebirdsql.org/manual/gbak.html), (Archivo .pdf (http://www.firebirdsql.org/pdfmanual/Firebird-gbak.pdf))
GBAK — Firebird Backup and Restore (http://www.destructor.de/firebird/gbak.htm)
Backup & Restore Recipes (http://www.firebirdsql.org/manual/gbak-recipies.html)


Saludos :)