IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Administration PostgreSQL Discussion :

Sauvegarde - Restauration de base - Language already exists


Sujet :

Administration PostgreSQL

  1. #1
    Membre du Club
    Inscrit en
    Mars 2005
    Messages
    69
    Détails du profil
    Informations personnelles :
    Âge : 33

    Informations forums :
    Inscription : Mars 2005
    Messages : 69
    Points : 68
    Points
    68
    Par défaut Sauvegarde - Restauration de base - Language already exists
    Bonjour à tous.

    Je me trouve face à un problème qui après pas mal de recherche n'a pas trouvé de solution.
    J'espère que certains d'entre vous pourront m'éclairer
    Je vais organiser mon poste en 3 partie : ce que je veux faire, ce que j’exécute, ce qui pose problème.

    Tout d'abord ce que je veux faire :
    • Sauvegarder une base avec l'ensemble des infos (structure, données, fonctions, trigger) dans un fichier "dump"
    • Restaurer ces mêmes données (structure,données,trigger,etc...) dans une nouvelle base ayant un nom différent (ex: src=toto dst=titi)


    Jusque là rien de bien sorcier.

    Ensuite ce que je fais :
    1. un pg_dump ainsi :
      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      pg_dump -i -F c -i -h ***.***.***.***  -p #### -U #### -f  c:\dump.bak maBaseSource
    2. un script de création qui est à la fin de la liste
    3. un pg_restore :
      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      pg_restore -F c  -h ##### -p #### -U #### -d testingBackup C:\dump.bak


    Code Source de creation de la base
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    CREATE DATABASE "testingBackup"
      WITH OWNER = postgres
           ENCODING = 'UTF8'
           TABLESPACE = pg_default
           LC_COLLATE = 'French_France.1252'
           LC_CTYPE = 'French_France.1252'
           CONNECTION LIMIT = -1;
    Ce que j'ai comme problème :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    pg_restore: [archiver (db)] Error while PROCESSING TOC:
    pg_restore: [archiver (db)] Error from TOC entry 626; 2612 16386 PROCEDURAL LANG
    UAGE plpgsql postgres
    pg_restore: [archiver (db)] could not execute query: ERREUR:  le langage "plpgsql" existe déjà*
        Command was:
    CREATE PROCEDURAL LANGUAGE plpgsql;
    WARNING: errors ignored on restore: 1
    Dans le fond il n'y a pas de problème puisque tout est restauré mais dans un soucis de "propreté" je souhaite enlevé toute les erreurs.
    Dans ce but je suis ouvert à toute vos propositions.

    Merci d'avance de votre aide.

  2. #2
    Membre émérite
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    1 874
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 874
    Points : 2 890
    Points
    2 890
    Par défaut
    La raison à ça est qu'à partir de la version 9 de postgres, le langage plpgsql est inclus implicitement dans le CREATE DATABASE, alors qu'avant il était optionnel

    A part ignorer l'erreur qui n'a pas d'importance, il y a bien au moins 2 solutions pour qu'elle ne se produise pas:

    1) Utiliser le pg_dump de la version cible, pour dumper la base source. En fait cette méthode est préconisée systématiquement pour passer à une version plus récente, et on voit pourquoi sur cet exemple: le nouveau pg_dump est toujours plus adapté que l'ancien à supporter les nouveautés.

    2) Si pas possible, se connecter sur la base nouvellement créée avant le pg_restore et exécuter un DROP LANGUAGE plpgsql;

  3. #3
    Membre du Club
    Inscrit en
    Mars 2005
    Messages
    69
    Détails du profil
    Informations personnelles :
    Âge : 33

    Informations forums :
    Inscription : Mars 2005
    Messages : 69
    Points : 68
    Points
    68
    Par défaut
    J'ai trouvé une autre solution, merci à Tom Lane* de la mailing PGSQL.

    En fait chaque base de donnée est créée à partir d'un "modèle" de base de données qui est copié pour créer la nouvelle.

    Le modèle par défaut est template1 qui contient le langage plpgsql.
    la solution serait donc d'indiquer
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    WITH TEMPLATE=template0
    dans le script de création de base.

    Merci également estofilo, j'avais en effet envisagé ta deuxième méthode.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Java-Postgres sauvegarde/restauration d'un base de données
    Par Itachi-sama dans le forum Général Java
    Réponses: 2
    Dernier message: 28/11/2011, 15h19
  2. initialiser, sauvegarder et restaurer une base de données
    Par ing1312 dans le forum Bases de données
    Réponses: 10
    Dernier message: 19/07/2009, 22h52
  3. Sauvegarder et restaurer une base
    Par The eye dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 10/09/2008, 15h55
  4. Sauvegarder/Restaurer une base
    Par Sytchev3 dans le forum Access
    Réponses: 3
    Dernier message: 12/06/2006, 22h35
  5. Sauvegarde / restauration d'une base sur un autre PC
    Par LEF97 dans le forum Administration
    Réponses: 2
    Dernier message: 31/08/2005, 16h22

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo