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

SQL Procédural MySQL Discussion :

Insertion d'un fichier dans un BLOB qui ne marche pas


Sujet :

SQL Procédural MySQL

  1. #1
    Invité
    Invité(e)
    Par défaut Insertion d'un fichier dans un BLOB qui ne marche pas
    Bonjour tout le monde!

    Je sollicite votre aide car j'ai un problème dont je ne vois vraiment pas la cause.

    J'ai une table dont l'une des colonnes est un BLOB et je cherche à y insérer le contenu d'un fichier.

    J'utilise donc:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    INSERT INTO matable (nom, donnees) VALUES ('UnNom', LOAD_FILE('/chemin/vers/mon/fichier.txt'));
    La commande est OK, une entrée "UnNom" est bien créée dans ma table… Mais le champ donnees reste désespérément vide (null).

    Pourtant le chemin est bon (j'ai essayé de mettre le fichier à la racine, et avec un nom sans caractères spéciaux, sans espace etc.), les droits sont bons (rw-r--r--) et le fichier fait à peine 400 octets (oui, octets, pas ko).

    Le "pire", c'est que j'arrive à le faire en Java (les données sont stockées dans des byte[]). Mais je dois absolument pouvoir le faire directement en ligne de commande.

    Avez-vous une idée d'où ça peut venir, parce-que moi je sèche là…

    Merci d'avance!

    [Edit]Ça ne marche pas non plus avec un UPDATE

  2. #2
    Expert éminent
    Avatar de qi130
    Homme Profil pro
    Expert Processus IT
    Inscrit en
    Mars 2003
    Messages
    3 897
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : Expert Processus IT
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2003
    Messages : 3 897
    Points : 6 024
    Points
    6 024
    Par défaut
    L'exemple du manuel spécifie des doubles quotes:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    UPDATE tbl_name
               SET blob_column=LOAD_FILE("/tmp/picture")
               WHERE id=1;
    De plus
    Le fichier doit se trouver sur le serveur qui exécute MySQL
    est-ce bien le cas ?
    "Il n'y a pas de bonnes réponses à une mauvaise question." (M. Godet)
    -----------------------
    Pensez à cloturer votre sujet - Aucune réponse aux sollicitations techniques par MP
    Usus magister est optimus

  3. #3
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par qi130 Voir le message
    L'exemple du manuel spécifie des doubles quotes:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    UPDATE tbl_name
               SET blob_column=LOAD_FILE("/tmp/picture")
               WHERE id=1;
    Même effet

    Citation Envoyé par qi130 Voir le message
    De plus
    est-ce bien le cas ?
    Oui

    Franchement, là je ne comprends pas.

  4. #4
    Invité
    Invité(e)
    Par défaut
    Ça a (presque) marché!!!

    En fait je viens de réessayer en utilisant l'utilisateur root de MySQL et ça a marché!

    J'aimerais pouvoir le faire avec d'autres utilisateurs. Je ne comprends pas pourquoi ça ne marche pas avec les autres car j'ai pourtant fait un GRANT ALL. Faut-il autoriser spécifiquement l'utilisation de cette fonction (car le reste marche parfaitement)?

  5. #5
    Invité
    Invité(e)
    Par défaut
    Problème: ça marche très bien sur mon Mac mais pas sur mon Windows, même en utilisant le compte root de MySQL.

    Voici la commande que j'ai rentrée:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    INSERT INTO cement (nom, donnees) VALUES ('UnNom', LOAD_FILE("C:\fichier.txt"));
    Qu'est-ce qui ne va pas?
    Dernière modification par Invité ; 15/11/2007 à 19h27.

  6. #6
    Membre averti Avatar de jota5450
    Inscrit en
    Janvier 2006
    Messages
    263
    Détails du profil
    Informations personnelles :
    Âge : 48

    Informations forums :
    Inscription : Janvier 2006
    Messages : 263
    Points : 332
    Points
    332
    Par défaut
    slt...

    t´as pas eu un "Can't get stat of 'C:fichier.txt' (Errcode: 2)" ?

    Comme message d´erreur?

    essaye avec "C:\\fichier.txt"

  7. #7
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par jota5450 Voir le message
    slt...

    t´as pas eu un "Can't get stat of 'C:fichier.txt' (Errcode: 2)" ?

    Comme message d´erreur?

    essaye avec "C:\\fichier.txt"
    Non je n'ai pas de message d'erreur. Je constate juste que donnee est à null pour le tuple que je viens d'ajouter…

    Sinon, j'ai essayé avec "\\" mais ça n'a pas marché non plus.
    (C'est bien un seul "\", normalement, non?)

  8. #8
    Invité
    Invité(e)
    Par défaut
    Aaargh!!!!

    Ça y est, c'est réglé. En fait, il ne faut pas utiliser le "\" comme séparateur sous Windows, mais le "/", comme sous *nix;

    Merci à tous!


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

Discussions similaires

  1. enregistrement d'un fichier dans un blob
    Par so007 dans le forum Hibernate
    Réponses: 16
    Dernier message: 20/01/2010, 20h07
  2. readonly dans un select qui ne marche pas sous IE
    Par jules_diedhiou dans le forum Général JavaScript
    Réponses: 9
    Dernier message: 15/03/2009, 14h17
  3. Insertion d'un fichier dans un champ blob
    Par malikoo dans le forum PL/SQL
    Réponses: 1
    Dernier message: 05/01/2009, 19h44
  4. Insertion nom de fichier dans un état
    Par superseba888 dans le forum Access
    Réponses: 2
    Dernier message: 20/08/2006, 12h23
  5. Réponses: 17
    Dernier message: 15/05/2006, 13h28

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