PostgreSQL La base de donnees la plus sophistiquee au monde.

Forums PostgreSQL.fr

Le forum officiel de la communauté francophone de PostgreSQL

Vous n'êtes pas identifié(e).

#1 01/12/2011 11:08:58

jfbessey
Membre

Restauration avec pgadmin 1.14

Bonjour,

J'ai réalisé une sauvegarde de BDD OPENERP avec pgadmin mais je n'arrive pas à restaurer. La restauration ne s'effectue pas et j'ai le message "le process a retourné le code de sortie 1".

La sauvegarde s'est pourtant déroulée sans erreur.

Merci par avance pour votre aide.

Hors ligne

#2 01/12/2011 11:41:40

rjuju
Administrateur

Re : Restauration avec pgadmin 1.14

Bonjour.
Si la restauration ne s'effectue pas correctement, pg_restore doit afficher sur la sortie standard les problèmes qu'il a rencontré. Il nous faudrait ces erreurs pour pouvoir vous dire ce qui pose soucis.
Pouvez-vous lancer la restauration en redirigeant la sortie standard vers un fichier texte et le poster ?

Hors ligne

#3 01/12/2011 12:10:29

jfbessey
Membre

Re : Restauration avec pgadmin 1.14

Le message retourné est trop long pour être posté ici. J'envoie le début de celui-ci.
J'ai copié le message complet dans un fichier txt mais je ne sais pas comment le poster ici.


C:\Program Files\OpenERP 6.0\PostgreSQL\bin\pg_restore.exe --host localhost --port 5432 --username "openerp" --dbname "essai1" --verbose "C:\coco.backup"
pg_restore: connecting to database for restore
pg_restore: creating SCHEMA public
pg_restore: creating COMMENT SCHEMA public
pg_restore: creating TABLE account_account
pg_restore: [archiver (db)] Error while PROCESSING TOC:
pg_restore: [archiver (db)] Error from TOC entry 2619; 1259 22481 TABLE account_account openerp
pg_restore: [archiver (db)] could not execute query: ERROR:  relation "account_account" already exists
    Command was:
CREATE TABLE account_account (
    id integer NOT NULL,
    parent_left integer,
    parent_right integer,
    create_uid i...
pg_restore: creating COMMENT TABLE account_account
pg_restore: creating COMMENT COLUMN account_account.code
pg_restore: creating COMMENT COLUMN account_account.reconcile
pg_restore: creating COMMENT COLUMN account_account.currency_id
pg_restore: creating COMMENT COLUMN account_account.user_type
pg_restore: creating COMMENT COLUMN account_account.active
pg_restore: creating COMMENT COLUMN account_account.name
pg_restore: creating COMMENT COLUMN account_account.level
pg_restore: creating COMMENT COLUMN account_account.company_id
pg_restore: creating COMMENT COLUMN account_account.shortcut
pg_restore: creating COMMENT COLUMN account_account.note
pg_restore: creating COMMENT COLUMN account_account.parent_id
pg_restore: creating COMMENT COLUMN account_account.currency_mode
pg_restore: creating COMMENT COLUMN account_account.type
pg_restore: creating TABLE account_account_consol_rel
pg_restore: [archiver (db)] Error from TOC entry 2620; 1259 22509 TABLE account_account_consol_rel openerp
pg_restore: [archiver (db)] could not execute query: ERROR:  relation "account_account_consol_rel" already exists
    Command was: CREATE TABLE account_account_consol_rel (
    child_id integer NOT NULL,
    parent_id integer NOT NULL
);
pg_restore: creating COMMENT TABLE account_account_consol_rel
pg_restore: creating TABLE account_account_tax_default_rel
pg_restore: [archiver (db)] Error from TOC entry 2621; 1259 22542 TABLE account_account_tax_default_rel openerp
pg_restore: [archiver (db)] could not execute query: ERROR:  relation "account_account_tax_default_rel" already exists
    Command was: CREATE TABLE account_account_tax_default_rel (
    account_id integer NOT NULL,
    tax_id integer NOT NULL
);
pg_restore: creating COMMENT TABLE account_account_tax_default_rel
pg_restore: creating TABLE account_account_template
pg_restore: [archiver (db)] Error from TOC entry 2654; 1259 23065 TABLE account_account_template openerp
pg_restore: [archiver (db)] could not execute query: ERROR:  relation "account_account_template" already exists
    Command was: CREATE TABLE account_account_template (
    id integer NOT NULL,
    create_uid integer,
    create_date timestamp without t...
pg_restore: creating COMMENT TABLE account_account_template
pg_restore: creating COMMENT COLUMN account_account_template.currency_id
pg_restore: creating COMMENT COLUMN account_account_template.code
pg_restore: creating COMMENT COLUMN account_account_template.name
pg_restore: creating COMMENT COLUMN account_account_template.user_type
pg_restore: creating COMMENT COLUMN account_account_template.shortcut
pg_restore: creating COMMENT COLUMN account_account_template.note
pg_restore: creating COMMENT COLUMN account_account_template.parent_id
pg_restore: creating COMMENT COLUMN account_account_template.nocreate
pg_restore: creating COMMENT COLUMN account_account_template.reconcile
pg_restore: creating COMMENT COLUMN account_account_template.type
pg_restore: creating TABLE account_account_template_tax_rel
pg_restore: [archiver (db)] Error from TOC entry 2655; 1259 23101 TABLE account_account_template_tax_rel openerp
pg_restore: [archiver (db)] could not execute query: ERROR:  relation "account_account_template_tax_rel" already exists
    Command was: CREATE TABLE account_account_template_tax_rel (
    account_id integer NOT NULL,
    tax_id integer NOT NULL
);
pg_restore: creating COMMENT TABLE account_account_template_tax_rel
pg_restore: creating TABLE account_account_type
pg_restore: [archiver (db)] Error from TOC entry 2615; 1259 22441 TABLE account_account_type openerp
pg_restore: [archiver (db)] could not execute query: ERROR:  relation "account_account_type" already exists
    Command was: CREATE TABLE account_account_type (
    id integer NOT NULL,
    create_uid integer,
    create_date timestamp without time ...
pg_restore: creating COMMENT TABLE account_account_type
pg_restore: creating COMMENT COLUMN account_account_type.note
pg_restore: creating COMMENT COLUMN account_account_type.close_method
pg_restore: creating COMMENT COLUMN account_account_type.code
pg_restore: creating COMMENT COLUMN account_account_type.name
pg_restore: creating COMMENT COLUMN account_account_type.report_type
pg_restore: creating COMMENT COLUMN account_account_type.sign
pg_restore: creating TABLE account_account_type_rel
pg_restore: [archiver (db)] Error from TOC entry 2630; 1259 22675 TABLE account_account_type_rel openerp
pg_restore: [archiver (db)] could not execute query: ERROR:  relation "account_account_type_rel" already exists
    Command was: CREATE TABLE account_account_type_rel (
    journal_id integer NOT NULL,
    account_id integer NOT NULL
);
pg_restore: creating COMMENT TABLE account_account_type_rel
pg_restore: creating TABLE account_analytic_account
pg_restore: [archiver (db)] Error from TOC entry 2544; 1259 21353 TABLE account_analytic_account openerp
pg_restore: [archiver (db)] could not execute query: ERROR:  relation "account_analytic_account" already exists
    Command was: CREATE TABLE account_analytic_account (
    id integer NOT NULL,
    create_uid integer,
    create_date timestamp without t...
pg_restore: creating COMMENT TABLE account_analytic_account
pg_restore: creating COMMENT COLUMN account_analytic_account.code
pg_restore: creating COMMENT COLUMN account_analytic_account.description
pg_restore: creating COMMENT COLUMN account_analytic_account.quantity_max
pg_restore: creating COMMENT COLUMN account_analytic_account.contact_id
pg_restore: creating COMMENT COLUMN account_analytic_account.currency_id
pg_restore: creating COMMENT COLUMN account_analytic_account.date
pg_restore: creating COMMENT COLUMN account_analytic_account.partner_id
pg_restore: creating COMMENT COLUMN account_analytic_account.user_id
pg_restore: creating COMMENT COLUMN account_analytic_account.name
pg_restore: creating COMMENT COLUMN account_analytic_account.date_start
pg_restore: creating COMMENT COLUMN account_analytic_account.company_id
pg_restore: creating COMMENT COLUMN account_analytic_account.parent_id
pg_restore: creating COMMENT COLUMN account_analytic_account.state
pg_restore: creating COMMENT COLUMN account_analytic_account.type
pg_restore: creating TABLE account_analytic_journal
pg_restore: [archiver (db)] Error from TOC entry 2667; 1259 23348 TABLE account_analytic_journal openerp
pg_restore: [archiver (db)] could not execute query: ERROR:  relation "account_analytic_journal" already exists
    Command was: CREATE TABLE account_analytic_journal (
    id integer NOT NULL,
    create_uid integer,
    create_date timestamp without t...
pg_restore: creating COMMENT TABLE account_analytic_journal
pg_restore: creating COMMENT COLUMN account_analytic_journal.code
pg_restore: creating COMMENT COLUMN account_analytic_journal.name
pg_restore: creating COMMENT COLUMN account_analytic_journal.active
pg_restore: creating COMMENT COLUMN account_analytic_journal.type
pg_restore: creating COMMENT COLUMN account_analytic_journal.company_id
pg_restore: creating TABLE account_analytic_line
pg_restore: [archiver (db)] Error from TOC entry 2546; 1259 21406 TABLE account_analytic_line openerp
pg_restore: [archiver (db)] could not execute query: ERROR:  relation "account_analytic_line" already exists
    Command was: CREATE TABLE account_analytic_line (
    id integer NOT NULL,
    create_uid integer,
    create_date timestamp without time...

Hors ligne

#4 01/12/2011 12:18:34

rjuju
Administrateur

Re : Restauration avec pgadmin 1.14

Les erreurs viennent du fait que les tables existent déjà (could not execute query: ERROR:  relation "account_account" already exists). Il est probable que malgré ces erreurs les données aient bien été restaurées.

Vous pouvez regarder dans les tables si les données correspondent à ce que vous vouliez restaurer, sinon vous pouvez utiliser différentes options de pg_restore pour éviter ces erreur, telles que :

-a : pour ne restaurer que les données
-c : pour supprimer les objets avant restauration

Hors ligne

#5 01/12/2011 12:22:51

Marc Cousin
Membre

Re : Restauration avec pgadmin 1.14

Ou qu'elles aient été restaurées en double, sur les tables n'ayant pas de primary key smile

Hors ligne

#6 01/12/2011 12:34:30

jfbessey
Membre

Re : Restauration avec pgadmin 1.14

J'ai essayé avec l'option -c et tout semble bien fonctionner.

Merci beaucoup pour votre aide.

Hors ligne

#7 01/12/2011 12:37:31

rjuju
Administrateur

Re : Restauration avec pgadmin 1.14

Ah oui exact. Du coup en fait pour les tables qui ont des clé primaires les données n'ont pas été restaurées, ou juste les lignes avaient été supprimées depuis la sauvegarde ? donc il faut forcément supprimer les données avant.

Personnellement quand je restaure une base (ou un schéma isolé), je la droppe et le recréé pour éviter ce genre de problème, mais ce n'est peut-être pas la meilleure solution.

Hors ligne

#8 01/12/2011 14:39:51

Marc Cousin
Membre

Re : Restauration avec pgadmin 1.14

En fait, le COPY s'exécute dans une transaction. Soit il restaure tout, soit rien. Donc une table qui a des PK a une forte chance d'avoir au moins un enregistrement en conflit, donc aucune restauration de données. Une table qui n'a pas de PK va avoir plein d'enregistrements en double. Dans les 2 cas, c'est pas trop ce qu'on cherche.

Hors ligne

#9 01/12/2011 22:49:33

gleu
Administrateur

Re : Restauration avec pgadmin 1.14

D'où l'intérêt d'utiliser l'option -1 pour que tout se fasse dans une transaction.

Hors ligne

#10 09/12/2011 11:39:32

redbar
Membre

Re : Restauration avec pgadmin 1.14

bonjour
je developpe actuellement un logiciel de gestion de stock en Java et j'utilise comme base de données Postgresql9 . mais j'utilise pgadmin3 pour accèder à ma base . Mais pour problème est que je voudrait empêcher l'accès de ma base à toute personne non autorisé. c'est vrai que pour le serveur par defaut il y a un mot de passe mais cela à mon sens ne suffit pas.
Mais tout le monde peut avoir accès à l'interface de pgadmin3. n'y aurait t'il pas un moyen de mettre un mot de passe pour acceder à l'interface de pgadmin3.

aussi voudrais je dployer mon application comment fermer ma base de données en ecriture.
merci

Hors ligne

#11 09/12/2011 11:54:06

gleu
Administrateur

Re : Restauration avec pgadmin 1.14

Tout d'abord, tout nouvelle question doit être sur un nouveau thread. Ce serait plus simple pour tout le monde.

Concernant votre problème, il n'y a pas moyen de fournir un mot de passe pour accéder à pgadmin3. De toute façon, à partir du moment où lm'utilisateur a les informations pour se connecter, il peut utiliser n'importe quel outil, comme psql par exemple, ou libreoffice, ou n'importe quel outil capable de se connecter à PostgreSQL. Donc votre problème, ce n'est pas pgadmin3, c'est que vous donnez l'accès à la base de données.

Quant à fermer sa base en écriture, il faut créer un utilisateur et ne pas lui donner le droit d'écriture dans les tables. Voir les ordres CREATE ROLE, GRANT et REVOKE.

Hors ligne

Pied de page des forums