Précédent   Forum des professionnels en informatique > Bases de données > MySQL > SQL Procédural
SQL Procédural Forum d'entraide sur les triggers, les procédures stockées et les fonctions en MySQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 15/11/2007, 08h22   #1
Candidat au titre de Membre du Club
 
Inscription : décembre 2006
Messages : 42
Détails du profil
Informations forums :
Inscription : décembre 2006
Messages : 42
Points : 12
Points : 12
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 :
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
Mateo34 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/11/2007, 09h34   #2
Expert Confirmé Sénior
 
Avatar de qi130
 
Homme Pierre
Ingénieur qualité méthodes
Inscription : mars 2003
Messages : 3 726
Détails du profil
Informations personnelles :
Nom : Homme Pierre
Âge : 51
Localisation : France

Informations professionnelles :
Activité : Ingénieur qualité méthodes
Secteur : Finance

Informations forums :
Inscription : mars 2003
Messages : 3 726
Points : 4 739
Points : 4 739
L'exemple du manuel spécifie des doubles quotes:
Code :
1
2
3
UPDATE tbl_name
           SET blob_column=LOAD_FILE("/tmp/picture")
           WHERE id=1;
De plus
Citation:
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
qi130 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/11/2007, 15h02   #3
Candidat au titre de Membre du Club
 
Inscription : décembre 2006
Messages : 42
Détails du profil
Informations forums :
Inscription : décembre 2006
Messages : 42
Points : 12
Points : 12
Citation:
Envoyé par qi130 Voir le message
L'exemple du manuel spécifie des doubles quotes:
Code :
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.
Mateo34 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/11/2007, 15h36   #4
Candidat au titre de Membre du Club
 
Inscription : décembre 2006
Messages : 42
Détails du profil
Informations forums :
Inscription : décembre 2006
Messages : 42
Points : 12
Points : 12
Ç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)?
Mateo34 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/11/2007, 17h40   #5
Candidat au titre de Membre du Club
 
Inscription : décembre 2006
Messages : 42
Détails du profil
Informations forums :
Inscription : décembre 2006
Messages : 42
Points : 12
Points : 12
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 :
1
2
 
INSERT INTO cement (nom, donnees) VALUES ('UnNom', LOAD_FILE("C:\fichier.txt"));
Qu'est-ce qui ne va pas?
Mateo34 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/11/2007, 19h21   #6
Membre éclairé
 
Avatar de jota5450
 
Jota Alves
Inscription : janvier 2006
Messages : 263
Détails du profil
Informations personnelles :
Nom : Jota Alves
Âge : 36

Informations forums :
Inscription : janvier 2006
Messages : 263
Points : 303
Points : 303
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"
jota5450 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/11/2007, 19h35   #7
Candidat au titre de Membre du Club
 
Inscription : décembre 2006
Messages : 42
Détails du profil
Informations forums :
Inscription : décembre 2006
Messages : 42
Points : 12
Points : 12
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?)
Mateo34 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/11/2007, 19h57   #8
Candidat au titre de Membre du Club
 
Inscription : décembre 2006
Messages : 42
Détails du profil
Informations forums :
Inscription : décembre 2006
Messages : 42
Points : 12
Points : 12
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!

Mateo34 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 07h24.


 
 
 
 
Partenaires

Hébergement Web