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

MySQL Discussion :

[BATCH Windows] Commande MySQL et gestion des erreurs


Sujet :

MySQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué

    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 10
    Par défaut [BATCH Windows] Commande MySQL et gestion des erreurs
    Bonjour,
    Je n'arrive pas dans un script en bach a rediriger les erreurs d'une commande MySQL vers un fichier de log.

    Exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    SET user=USER
    SET mdp=MOTDEPASSE
    SET base=TEST
    SET host=LOCALHOST
     
    MYSQL -h%host% -u%user% -p%mdp% %base% --execute="MA COMMANDE SQL QUI FAIT UNE ERREUR OU UN WARNING" > monlog.log
    Lorsque je fais cela le fichier monlog.log reste désespérement vide.
    J'ai essayé la commande SHOW WARNINGS mais les résultats sont vraiement aléatoires suivant s'il y a des erreurs des warnings etc.

    Ya t'il une syntaxe particulière à connaitre ?

  2. #2
    Rédacteur/Modérateur

    Avatar de Antoun
    Homme Profil pro
    Architecte décisionnel
    Inscrit en
    Octobre 2006
    Messages
    6 287
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Architecte décisionnel
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2006
    Messages : 6 287
    Par défaut
    en alternative, tu peux utiliser la commande tee du client mysql. Elle doit également être accessible dans les paramètres (un truc du genre --tee=...).

  3. #3
    Membre habitué

    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 10
    Par défaut
    Effectivement j'ai parcouru 10 fois la doc sans la voir celle la...
    Bref j'ai essayé et c'est pas mieux

    Ma commande:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MYSQL -h%host% -u%user% -p%mdp% %base% --tee="monlog.log" --execute="ALTER TABLE Rep_Int ENGINE=MyISAM;"
    Lors de l'execution j'ai cette manifique erreur:
    ERROR 1217 (23000) at line 1: Cannot delete or update a parent row: a foreign key constraint fails
    Qui est normale par ailleurs, je sais comment y remédier mais je veux pouvoir en avoir une trace dans un log.
    Et donc dans mon fichier log.. bah toujours rien. Il est bien créé mais vide.

  4. #4
    Rédacteur/Modérateur

    Avatar de Antoun
    Homme Profil pro
    Architecte décisionnel
    Inscrit en
    Octobre 2006
    Messages
    6 287
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Architecte décisionnel
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2006
    Messages : 6 287
    Par défaut
    Il y a un buffer d'écriture. Ton fichier ne sera donc rempli que lorsque tu quitteras le client mysql.

  5. #5
    Membre habitué

    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 10
    Par défaut
    Alors le buffer se vide bien dans le fichier au moment de la fermeture du client.
    Cela marche parfaitement si on lance le client, puis qu'on execute des requetes a la mano avant de quitter. Par contre si l'on veut l'executer en batch et passer les requettes par redirection (<) ou par l'option --execute bah ca ne marche plus.
    J'ai essayé de rajouter la commande exit à la fin de ma requette mais ca ne change rien.

    Une idée ?

  6. #6
    Membre habitué

    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 10
    Par défaut
    J'ai continué à chercher de mon côté mais rien à faire.

    Mon dernier test de batch:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    ECHO tee monlog.log; > temp.sql
    ECHO ALTER TABLE Rep_Int ENGINE=MyISAM; >> temp.sql
    ECHO exit >> temp.sql
     
    MYSQL -hLOCALHOST -uUSER -pPASSWORD TEST --execute="source temp.sql";
    quand j'execute le script depuis la commande mysql en faisant un "source temp.sql" j'ai bien mes résultats dans le log mais pas quand j'execute le batch

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

Discussions similaires

  1. commande shell avec gestion des erreurs
    Par nymus7 dans le forum Programmation et administration système
    Réponses: 0
    Dernier message: 06/08/2008, 13h59
  2. gestion des erreurs mysql
    Par PAYASS59 dans le forum Administration
    Réponses: 1
    Dernier message: 04/07/2008, 08h54
  3. gestion des erreurs mysql
    Par sefir dans le forum SQL Procédural
    Réponses: 2
    Dernier message: 12/12/2007, 13h23
  4. Gestion des erreurs sur une commande multiple
    Par domiq44 dans le forum Shell et commandes GNU
    Réponses: 5
    Dernier message: 05/10/2006, 15h03
  5. [VB6 + Mysql]Gestion des erreurs de connexion
    Par Deejoh dans le forum VB 6 et antérieur
    Réponses: 9
    Dernier message: 25/01/2006, 20h01

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