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

PostgreSQL Discussion :

recuperation d'erreur en ligne de commande


Sujet :

PostgreSQL

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    53
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 53
    Par défaut recuperation d'erreur en ligne de commande
    Bonjour, je suis sur un projet BDD en PostGres (que je decouvre).

    Mon probleme est que je genere un script d'insertion dans la base ( ~36000 requetes) et que sur ces 36000 requetes, a peut pres 1000 genere une erreur du a une contrainte de primary key ( et normalement ca devrait pas le faire )

    Donc comme je travail en ligne de commande, pas moyen de voir quelles sont les requetes qui genere ces erreurs.

    j'ai bien essayé
    \o mon_fichier_res.txt
    mais il n'y inscrit uniquement les insert qui ont fonctionné...

    donc la je vois pas trop comment faire pour identifier les requetes problematiques...


    Si quelqu'un a une idée je suis tout oui.

    merci

  2. #2
    Membre émérite
    Avatar de gerald2545
    Profil pro
    Inscrit en
    Février 2003
    Messages
    744
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 744
    Par défaut
    si tu es sûr que tu n'as pas de problème avec l'intégrité référentielle, c'est qu'une table contenant une clé étrangère vers une seconde est créée en premier. Dans ce cas, je crois que tu as une option du genre DISABLE CONSTRAINTS; (à moins que ce ne soit en MySQL....bref je pense que c'est possible).

    Sinon, ce que tu peux faire c'est d'éxécuter ton script en ligne de commande et de rediriger les messages d'erreur vers un fichier.
    J'imagine que tu es en linux?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    psql -f ton_fichier.sql >& erreur.log
    enfin je crois, confirmation dans le public?

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    53
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 53
    Par défaut
    si tu es sûr que tu n'as pas de problème avec l'intégrité référentielle, c'est qu'une table contenant une clé étrangère vers une seconde est créée en premier. Dans ce cas, je crois que tu as une option du genre DISABLE CONSTRAINTS; (à moins que ce ne soit en MySQL....bref je pense que c'est possible).
    ici, j'ai pas de probleme de cles etrangeres, mon probleme est que je veux inserer une occurence dont la clé primaire existe deja ( donc je vais devoir transformer mon script qui créer les INSERT).

    Je vais voir du coté de ton idee de faire ca en ligne de commande.
    mais pour l'instant je me connect en faisant

    psql nom_de_ma_base

    dans ta ligne de commande, le nom de la base n'est pas précisé, mais je vais fouiller cette idée.(demain)

    merci

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    53
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 53
    Par défaut
    je viens de guetter le man de psql

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    psql -d ma_base -f mon_fichier >& erreur.log
    sinon l'option qui redirige en sortie toutes les lignes en entrées.


    celle ci doit pas etre suffisante, car equivalente au \o
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    -o filename
     
           --output filename
                  Put  all  query  output into file filename. This is
                  equivalent to the command \o.

    bon avec ca je risque de trouver la solution.
    je posterai demain pour dire ou j'en suis.

    merci bien

  5. #5
    Membre émérite
    Avatar de gerald2545
    Profil pro
    Inscrit en
    Février 2003
    Messages
    744
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 744
    Par défaut
    sinon tu peux spécifier dans ton fichier SQL la base sur laquelle tu veux travailler.
    je n'ai pas le code sous les yeux mais je peux te dire demain matin....

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    53
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 53
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    psql -d ma_base -f mon_fichier  -a >& erreur.log
    cette solution marche bien, le -a est indispensable, il reinscrit a chaque fois la ligne en entrée, et le message d'erreur suit.

    merci pour ton aide

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

Discussions similaires

  1. REP-159(Erreur de syntaxe sur la ligne de commande)
    Par jeunot0108 dans le forum Reports
    Réponses: 8
    Dernier message: 26/02/2020, 14h08
  2. Réponses: 6
    Dernier message: 27/02/2008, 09h51
  3. Executer une ligne de commande ET recuperer valeur retour
    Par Korko Fain dans le forum Delphi
    Réponses: 4
    Dernier message: 10/08/2007, 16h31
  4. Ligne de commande : erreur INSERT
    Par webrider dans le forum Requêtes
    Réponses: 7
    Dernier message: 30/08/2006, 14h13
  5. Recuperer la ligne de commande du DOS
    Par Kernel32.DLL dans le forum Autres éditeurs
    Réponses: 4
    Dernier message: 23/08/2004, 15h50

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