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)
-   -   Pasar Firebird de 2.0 a 2.5 (https://www.clubdelphi.com/foros/showthread.php?t=68433)

celades1 13-06-2010 09:50:06

Pasar Firebird de 2.0 a 2.5
 
Hola

Estoy probando de pasar de Firebird 2.0 a 2.5 una BD y me encuentro con el problema al restaurar que me da el error

Cita:

gbak:restoring stored procedure COMPROBA_ASSENTAMENT_TMP_S
gbak: ERROR:Malformed string
gbak:Invalid metadata detected. Use -FIX_FSS_METADATA option.
gbak:Exiting before completion due to errors
El problema esta en que el procedure devuelve un campo MISSATGE
que recoge una cadena con una palabra acentuada



Código SQL [-]
create procedure COMPROBA_ASSENTAMENT_TMP_S (
CODI_EMPRESA varchar(10),
EXERCICI integer,
N_ASENT integer,
IVA varchar(1))
returns (
TOT_BE varchar(1),
SERIE varchar(2),
COMPTE_CL_PR varchar(15),
MISSATGE varchar(100))
as
begin
TOT_BE='S';
MISSATGE=NULL;
serie=null;
compte_cl_pr =null;
select min(codi_iva) FROM assentaments_temp where CODI_EMPRESA=:codi_empresa AND EXERCICI=:EXERCICI AND N_ASENT=:n_asent AND codi_IVA IS NOT NULL INTO :codi_iva;
SELECT TIP_GRUP_ID FROM busca_tip_grup_iva_repercutit INTO :P_TIP_GRUP_R;
SELECT TIP_GRUP_ID FROM busca_tip_grup_iva_SUPORTAT INTO :P_TIP_GRUP_S;
SELECT TIP_GRUP_ID FROM busca_tip_grup_clients INTO :P_TIP_GRUP_cl;
SELECT TIP_GRUP_ID FROM busca_tip_grup_proveidors INTO :P_TIP_GRUP_pr;
SELECT TIP_GRUP_ID FROM busca_tip_grup_retencio_clients INTO :P_TIP_GRUP_re;
SELECT TIP_GRUP_ID FROM busca_tip_grup_retencio_provei INTO :P_TIP_GRUP_res;
SELECT SERIE_SUPORTADA,TIPUS FROM tip_iva_comptable WHERE CODI_EMPRESA=:codi_empresa AND CODI=:CODI_IVA
INTO :SERIE,:P_TIP_IVA;
select count(*) from assentaments_temp a join comptes ch ON A.CODI_EMPRESA=Ch.CODI_EMPRESA AND A.EXERCICI=Ch.EXERCICI AND A.haber=Ch.CODI
join select_tip_grups(:CODI_EMPRESA,:EXERCICI,:P_TIP_GRUP_res) stg on (stg.codi_grup=ch.grup_3 or stg.codi_grup=ch.grup_4)
WHERE A.CODI_EMPRESA=:CODI_EMPRESA AND A.EXERCICI=:EXERCICI AND A.N_ASENT=:N_ASENT into :num1;
if (:num1>1) then TOT_BE='N';
if (:TOT_BE='N') then
MISSATGE='Assentament amb mes d''un apunt de Retenció';







La base de datos original 2.0 tiene charset ISO8859_1
Utilizo para restaurar ibexpert v 2006 i pido crear nueva BD


Me crea la Bd con los dominios i tablas,generadores,udf
pero sin ningun procedure

Luego yo voy script executive i ejecuto el procedure que falla en el restore
COMPROBA_ASSENTAMENT_TMP_S i me lo traga



Supongo que el problema es el acento de Retenció
Es un problema del Ibexpert ?
Debo hacerlo a traves del gback ?

Saludos

Panta

duilioisola 13-06-2010 12:13:21

En esta página, la gente de Firebird informa de esta "posible incompatibilidad" entre FB 2 y FB 2.5

Aparentemente, lo que tienes que hacer es restaurar tu base con los switches -fix_fss_data and -fix_fss_metadata

Cita:

Effects of Unicode Metadata

If you have not previously updated text objects within the metadata of your databases to be in character set UTF8, restoring a database until V.2.5 will fail with “malformed string” errors. To resolve this it is necessary to pay attention to the files in the /misc/upgrade/metadata directory of your installation and to use the new -fix_fss_data and -fix_fss_metadata switches in the gbak command line.

celades1 13-06-2010 17:43:17

Gracias

Al final he logrado hacer el restore desde la linia comandos del dos

Pongo el codigo para si alguien tiene el problema


Cita:

gbak -c -v -t -rep fitxer.fbk fitxer.ib -user SYSDBA -password masterkey
-FIX_FSS_D ISO8859_1 -FIX_FSS_M ISO8859_1

Panta

guillotmarc 13-06-2010 17:45:23

Sí, yo me encontré el mismo problema y ese switch en el comando de backup lo solventa.

ricardouzcategu 15-10-2010 01:07:54

Para que sirve el CHARSET?
 
Cita:

Empezado por guillotmarc (Mensaje 367156)
Sí, yo me encontré el mismo problema y ese switch en el comando de backup lo solventa.

Hola.. Yo tambien solvente el inconveniente con este comando, sin embargo, aunque es vergonzoso para mi decirlo, nunca he puesto interes en saber para que sirven los charset y pues, aprobecho esta oportunidad que es obligatorio ahora "fixear" por asi decirlo la estructura de la base de datos en cuanto a los charset... les pregunto a ustedes amigos foristas, alguien me puede dar una explicacion sumamente sencilla y util de para que y porque es importante tomar en cuenta esta caracteristica CHARSET?... con que se come y si me va a hacer bien la digestion?. jajaj.

Saludos y gracias de antemano.

guillotmarc 15-10-2010 11:16:53

Cita:

Empezado por ricardouzcategu (Mensaje 379346)
Hola.. Yo tambien solvente el inconveniente con este comando, sin embargo, aunque es vergonzoso para mi decirlo, nunca he puesto interes en saber para que sirven los charset y pues, aprobecho esta oportunidad que es obligatorio ahora "fixear" por asi decirlo la estructura de la base de datos en cuanto a los charset... les pregunto a ustedes amigos foristas, alguien me puede dar una explicacion sumamente sencilla y util de para que y porque es importante tomar en cuenta esta caracteristica CHARSET?... con que se come y si me va a hacer bien la digestion?. jajaj.

Saludos y gracias de antemano.

Hola.

El charset se utiliza para especificar en que idioma está el texto que guardas en la base de datos.

Esto tiene que ver sobre que palabras se aceptan como válidas en esa lengua (ese charset) y cuales no se aceptan (dando un error de transliterate) porqué estás intentando guardar algo que no es correcto en esa lengua. Por ejemplo tiene carácteres extraños que no se pueden presentar, como cuando quieres guardar una imagen en un campo de texto.

Además el charset es muy importante para los operadores de orden y búsqueda. Un determinado charset te puede decidir que González es igual a gonzalez, sin diferenciar entre mayúsculas y acentos, por lo que te simplifica las búsquedas. Además se ocupan de gestionar el orden de las palabras en tu lengua, por ejemplo, la letra ñ, por orden ascii, va detras de todas las demás letras, así que en orden alfabético ascii, ñoño va detrás de todas las palabras con Z. Pero en cambio, con el charset adecuado para castellano, Firebird ordenará correctamente, colocando ñoño justo detrás de todas las palabras con N.

¿ Se entiende, más o menos ?.

Saludos.

Casimiro Notevi 15-10-2010 12:46:19

Cita:

Empezado por guillotmarc (Mensaje 379373)
[..] ¿ Se entiende, más o menos ? [..]

Mejor explicado es imposible :)

ricardouzcategu 15-10-2010 16:02:25

Mejor imposible!!!

Muchas gracias..


Ahora otra preguntica... Cual usan ustedes?? para el castellano cual es el ideal ??? que tenga acento, ñ, apostrofes, etc..

Y la otra pregunta es, tiene alguna importancia el SO que se use y el idiona de dicho SO ?. Es decir, Afecta en algo en idioma del SO ?..

Gracias nuevamente!

Casimiro Notevi 15-10-2010 16:11:05

Cita:

Empezado por ricardouzcategu (Mensaje 379391)
Ahora otra preguntica... Cual usan ustedes?? para el castellano cual es el ideal ??? que tenga acento, ñ, apostrofes, etc..

En la base de datos yo nunca elijo ninguno, lo que hago es usarlo en los campos que creo que me va a hacer falta, por ejemplo, para guardar nombres, direcciones, etc. No sé si es lo ideal, aunque es lo que hago.

Código SQL [-]
 
set sql dialect 3;  
set names none; 
create database "rankings.fdb" PAGE_SIZE 8192 user "SYSDBA" password "masterkey"; 
/**/ 
create domain domCodigoNoNulo integer not null; 
create domain domNombre varchar(64) character set ISO8859_1;  /* fb < 2.1 */ 
/*create domain domNombre varchar(64) character set UTF8 collate ES_ES_CI_AI default '';*/  /* fb >= 2.1 */ 
create domain domImagen blob sub_type 0; 
create domain domFecha date; 
create domain domHora time; 
create domain domFechaHora timestamp; 
...

Cita:

Empezado por ricardouzcategu
Y la otra pregunta es, tiene alguna importancia el SO que se use y el idiona de dicho SO ?. Es decir, Afecta en algo en idioma del SO ?..
Gracias nuevamente!

No lo sé, siempre he usado el español.


La franja horaria es GMT +2. Ahora son las 10:18:21.

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