CMDBuild Forum

Errore durante il ripristino di cmdbuild (installazione)

Salve a tutti,

durante l'installazione di postgres, effettuando il restore del file cmdbuild.backup (come da Technical Manual, pag 14) viene mostrato il seguente errore:

ERROR: syntax error at or near "PROCEDURAL" at character 7
STATEMENT: ALTER PROCEDURAL LANGUAGE plpgsql OWNER TO postgres;

Grazie dell'attenzione,

Alessandro

Buongiorno,

il manuale non è chiaro in questo passaggio dell'installazione, il file "cmdbuild.backup" è un archivio compresso con il programma pg_dump e va ripristinato con pg_restore usando il seguente comando:

usr/bin/pg_restore -i -h [SERVER] -p [PORT] -U [USER] -d [DATABASE] -v "[PERCORSO]cmdbuild.backup"

oppure utilizzando l'interfaccia grafica pgAdmin III.

Se ha già effettuato il ripristino nel modo corretto e il problema persiste dovrebbe indicarci:

- la versione di CMDBuild che sta cercando di installare
- la versione di postgres installata
- il sistema operativo

eventualmente sarebbe anche utile avere il log completo che ha dopo avere eseguito il comando di ripristino.

tecnoteca wrote:

Buongiorno,

il manuale non è chiaro in questo passaggio dell'installazione, il file "cmdbuild.backup" è un archivio compresso con il programma pg_dump e va ripristinato con pg_restore usando il seguente comando:

usr/bin/pg_restore -i -h [SERVER] -p [PORT] -U [USER] -d [DATABASE] -v "[PERCORSO]cmdbuild.backup"

oppure utilizzando l'interfaccia grafica pgAdmin III.


Per il restore ho usato una console di pgAdmin III (v. 1.8) installata su un client MS Windows


tecnoteca wrote:


Se ha già effettuato il ripristino nel modo corretto e il problema persiste dovrebbe indicarci:

- la versione di CMDBuild che sta cercando di installare
- la versione di postgres installata
- il sistema operativo

eventualmente sarebbe anche utile avere il log completo che ha dopo avere eseguito il comando di ripristino.



- Versione CMDBuild: 0.90.1
- Versione PostgreSQL: 8.2.9
- Sistema operativo: RHEL AS release 4 (Nahant Update 4), kernel 2.6.9-42.ELsmp

Il log completo del database è di 215 righe e postarlo completo mi sembra eccessivo; però durante il restore, oltre all'errore segnalato, ci sono diversi messaggi del tipo:

NOTICE: merging column "IdClass" with inherited definition
NOTICE: merging column "IdClass" with inherited definition
NOTICE: ALTER TABLE / ADD PRIMARY KEY will create implicit index "Activity_pkey" for table "Activity"
NOTICE: ALTER TABLE / ADD PRIMARY KEY will create implicit index "Asset_pkey" for table "Asset"
NOTICE: ALTER TABLE / ADD PRIMARY KEY will create implicit index "Category_pkey" for table "Category"

che però mi sembrano non indicativi di alcun errore, mentre l'errore che ho segnalato è di sintassi.

Ringrazio e saluto,

Alessandro

il backup è stato creato utilizzando postgres 8.3 che sfortunatamente ha modificato la sintassi del comando in questione aggiungendo la parola chiave opzionale "PROCEDURAL", incompatibile con le versioni precedenti.

nei nostri test l'errore non si è verificato in quanto il comando viene eseguito solo se nel database non è già presente il linguaggio "plpgsql" e questa, sfortunatamente è una situazione che nei nostri db di test non si è mai verificata.

più tardi provvederemo a caricare sul sito una versione del rilascio con questo problema risolto, nel frattempo come work around dovrebbe eseguire i seguenti comandi:

CREATE LANGUAGE plpgsql;
ALTER LANGUAGE plpgsql OWNER TO postgres;


e poi provare a ripristinare il database.

la ringrazio per la segnalazione,

Stefano

tecnoteca wrote:

il backup è stato creato utilizzando postgres 8.3 che sfortunatamente ha modificato la sintassi del comando in questione aggiungendo la parola chiave opzionale "PROCEDURAL", incompatibile con le versioni precedenti.

nei nostri test l'errore non si è verificato in quanto il comando viene eseguito solo se nel database non è già presente il linguaggio "plpgsql" e questa, sfortunatamente è una situazione che nei nostri db di test non si è mai verificata.

più tardi provvederemo a caricare sul sito una versione del rilascio con questo problema risolto, nel frattempo come work around dovrebbe eseguire i seguenti comandi:

CREATE LANGUAGE plpgsql;
ALTER LANGUAGE plpgsql OWNER TO postgres;


e poi provare a ripristinare il database.

la ringrazio per la segnalazione,

Stefano


Lanciando l'istruzione "CREATE LANGUAGE plpgsql", ottengo il messaggio:

ERROR: language "plpgsql" already exists

********** Errore **********

ERROR: language "plpgsql" already exists
Stato SQL: 42710

Per quanto riguarda l'altra sistruzione "ALTER LANGUAGE plpgsql OWNER TO postgres" il messaggio è:

ERROR: syntax error at or near "OWNER"
LINE 1: ALTER LANGUAGE plpgsql OWNER TO postgres;
^

********** Errore **********

ERROR: syntax error at or near "OWNER"
Stato SQL: 42601
Carattere: 24

Secondo la SQL Reference, il comando ALTER LANGUAGE può unicamente modificare il nome del language, con l'opzione RENAME (http://www.postgresql.org/docs/8.2/interactive/sql-alterlanguage.html); ho controllato sulle Reference precedenti ed è sempre come indicato.

Se il LANGUAGE incriminato esiste già e non può esserne modificato il proprietario (che, peraltro dovrebbe essere già postgres, essendo il superuser del database), mi rimane il dubbio sulla necessità di eseguire questa istruzione.

Ringrazio e saluto,

Alessandro

Salve,

ho fatto delle prove cercando di riprodurre il problema e a quanto pare si verifica quando si cerca di ripristinare il database con una versione di pg_restore troppo recente rispetto al server.

probabilmente quindi sta usando sul client il pg_restore rilasciato con la versione 8.3 del database, mentre sul server ha installato la versione 8.2 del server.

la soluzione è quella di installare una versione compatibile di pg_restore sul client oppure eseguire il ripristino direttamente sul server utilizzando il comando riportato in un post precedente.

Stefano