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 10/06/2011, 16h18   #1
Invité de passage
 
Inscription : février 2008
Messages : 15
Détails du profil
Informations forums :
Inscription : février 2008
Messages : 15
Points : 2
Points : 2
Par défaut Envoi de mail à travers un trigger et un UDF ecrit en c

Bonjour,
Quelqu'un peut-il m'aider à écrire et exécuter une fonction en C sous mysql pour l'envoi de mail?
20styles est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/06/2011, 16h58   #2
Membre Expert
 
Homme Eric Dureuil
Développeur informatique
Inscription : avril 2011
Messages : 853
Détails du profil
Informations personnelles :
Nom : Homme Eric Dureuil
Localisation : France, Isère (Rhône Alpes)

Informations professionnelles :
Activité : Développeur informatique
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : avril 2011
Messages : 853
Points : 1 332
Points : 1 332
salut,

tu dois normalement passer par l'activation des UDF, mais leur façon d'expliquer l'intégration des UDF en c est pas terrible j'avoue...
__________________
Eric Dureuil, développeur web, c/c++, java indépendant
soyons
pensez à mettre et
ericd69 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/06/2011, 20h12   #3
Invité de passage
 
Inscription : février 2008
Messages : 15
Détails du profil
Informations forums :
Inscription : février 2008
Messages : 15
Points : 2
Points : 2
Par défaut Merci Eric

Mais comment activer les fonctions utilisateurs? Et si possible j'aimerais avoir des directives pour développer la fonction qui me permettra d'envoyer des mails avec mysql.
Cordialement
20styles est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/06/2011, 00h29   #4
Membre Expert
 
Homme Eric Dureuil
Développeur informatique
Inscription : avril 2011
Messages : 853
Détails du profil
Informations personnelles :
Nom : Homme Eric Dureuil
Localisation : France, Isère (Rhône Alpes)

Informations professionnelles :
Activité : Développeur informatique
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : avril 2011
Messages : 853
Points : 1 332
Points : 1 332
vu la pauvreté de la documentation mysql je te conseille de lire cette documentation et les autres sous-chapitres...

__________________
Eric Dureuil, développeur web, c/c++, java indépendant
soyons
pensez à mettre et
ericd69 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/07/2011, 13h02   #5
Invité de passage
 
Inscription : février 2008
Messages : 15
Détails du profil
Informations forums :
Inscription : février 2008
Messages : 15
Points : 2
Points : 2
J'ai finalement eu un code que j'ai compilé et copié dans la librairie /usr/lib/mysql/plugin, mais à chaque fois que j'essaie de créer la fonction il m'affiche l'erreur suivante:
Citation:
#1126 - Can't open shared library 'mymail.so' (errno: 22 /usr/lib/mysql/plugin/mymail.so: failed to map segment from shared object: Permission denied)
20styles est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/07/2011, 13h29   #6
Membre Expert
 
Homme Eric Dureuil
Développeur informatique
Inscription : avril 2011
Messages : 853
Détails du profil
Informations personnelles :
Nom : Homme Eric Dureuil
Localisation : France, Isère (Rhône Alpes)

Informations professionnelles :
Activité : Développeur informatique
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : avril 2011
Messages : 853
Points : 1 332
Points : 1 332
ça ne serait pas dû à un problème de droits sur ton dossier ou le fichier, ça, pour l'utilisateur mysql qui appelle le processus mysql?
__________________
Eric Dureuil, développeur web, c/c++, java indépendant
soyons
pensez à mettre et
ericd69 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/07/2011, 14h16   #7
Invité de passage
 
Inscription : février 2008
Messages : 15
Détails du profil
Informations forums :
Inscription : février 2008
Messages : 15
Points : 2
Points : 2
j'y ai pensé mais je ne sais pas comment le vérifier?
20styles est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/07/2011, 14h54   #8
Membre Expert
 
Homme Eric Dureuil
Développeur informatique
Inscription : avril 2011
Messages : 853
Détails du profil
Informations personnelles :
Nom : Homme Eric Dureuil
Localisation : France, Isère (Rhône Alpes)

Informations professionnelles :
Activité : Développeur informatique
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : avril 2011
Messages : 853
Points : 1 332
Points : 1 332
avec le logiciel de ftp qui t'as permis de mettre le fichier de la fonction dans le répertoire
__________________
Eric Dureuil, développeur web, c/c++, java indépendant
soyons
pensez à mettre et
ericd69 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/07/2011, 18h33   #9
Invité de passage
 
Inscription : février 2008
Messages : 15
Détails du profil
Informations forums :
Inscription : février 2008
Messages : 15
Points : 2
Points : 2
en fait je travaille en local sous ubuntu
20styles est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/07/2011, 18h40   #10
Membre Expert
 
Homme Eric Dureuil
Développeur informatique
Inscription : avril 2011
Messages : 853
Détails du profil
Informations personnelles :
Nom : Homme Eric Dureuil
Localisation : France, Isère (Rhône Alpes)

Informations professionnelles :
Activité : Développeur informatique
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : avril 2011
Messages : 853
Points : 1 332
Points : 1 332
sois tu utilises le navigateur graphique de fichier de ton environnement graphique alors

soit dans une console tu utilises la commande cd pour aller dans le dossier puis un ls pour lister les fichiers et là tu regardes si toutes les options sont identiques pour eux
__________________
Eric Dureuil, développeur web, c/c++, java indépendant
soyons
pensez à mettre et
ericd69 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/07/2011, 20h54   #11
Invité de passage
 
Inscription : février 2008
Messages : 15
Détails du profil
Informations forums :
Inscription : février 2008
Messages : 15
Points : 2
Points : 2
Citation:
Envoyé par ericd69 Voir le message
sois tu utilises le navigateur graphique de fichier de ton environnement graphique alors

soit dans une console tu utilises la commande cd pour aller dans le dossier puis un ls pour lister les fichiers et là tu regardes si toutes les options sont identiques pour eux
J'ai tout verifié et meme ajouté l'utilisateur mysql au groupe root mais rien n'a changé.J'ai toujours la même erreur.
20styles est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/07/2011, 22h18   #12
Membre Expert
 
Homme Eric Dureuil
Développeur informatique
Inscription : avril 2011
Messages : 853
Détails du profil
Informations personnelles :
Nom : Homme Eric Dureuil
Localisation : France, Isère (Rhône Alpes)

Informations professionnelles :
Activité : Développeur informatique
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : avril 2011
Messages : 853
Points : 1 332
Points : 1 332
ça te donne quoi comme valeur pour les droits?
__________________
Eric Dureuil, développeur web, c/c++, java indépendant
soyons
pensez à mettre et
ericd69 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/07/2011, 14h37   #13
Invité de passage
 
Inscription : février 2008
Messages : 15
Détails du profil
Informations forums :
Inscription : février 2008
Messages : 15
Points : 2
Points : 2
Voici les droits affichés:

-rw-r--r-- 1 root      root        42014 2011-02-10 08:53 ha_example.a
-rw-r--r-- 1 root      root         1002 2011-02-10 08:53 ha_example.la
lrwxrwxrwx 1 root      root           19 2011-04-18 14:01 ha_example.so -> ha_example.so.0.0.0
lrwxrwxrwx 1 root      root           19 2011-04-18 14:01 ha_example.so.0 -> ha_example.so.0.0.0
-rw-r--r-- 1 root      root        21964 2011-02-10 08:55 ha_example.so.0.0.0
-rw-r--r-- 1 root      root      1919790 2011-02-10 08:53 ha_innodb_plugin.a
-rw-r--r-- 1 root      root         1044 2011-02-10 08:53 ha_innodb_plugin.la
lrwxrwxrwx 1 root      root           25 2011-03-31 09:58 ha_innodb_plugin.so -> ha_innodb_plugin.so.0.0.0
lrwxrwxrwx 1 root      root           25 2011-03-31 09:58 ha_innodb_plugin.so.0 -> ha_innodb_plugin.so.0.0.0
-rw-r--r-- 1 root      root      1252128 2011-02-10 08:55 ha_innodb_plugin.so.0.0.0
-rwxrwxrwx 1 root      root         7041 2011-07-01 10:41 mymail.so
Le fichier se nomme mymail.so, il est dans le dossier /usr/lib/mysql/plugin/
20styles est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/07/2011, 17h32   #14
Membre Expert
 
Homme Eric Dureuil
Développeur informatique
Inscription : avril 2011
Messages : 853
Détails du profil
Informations personnelles :
Nom : Homme Eric Dureuil
Localisation : France, Isère (Rhône Alpes)

Informations professionnelles :
Activité : Développeur informatique
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : avril 2011
Messages : 853
Points : 1 332
Points : 1 332
ça peut venir des répertoires où tu la mets ou de la typographie du nom, car linux est sensible à la casse...

lis ça, le mec parle des udf (c'est en anglais) pour une installation sous windows, mais c'est facilement transposable
__________________
Eric Dureuil, développeur web, c/c++, java indépendant
soyons
pensez à mettre et
ericd69 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/07/2011, 18h52   #15
Invité de passage
 
Inscription : février 2008
Messages : 15
Détails du profil
Informations forums :
Inscription : février 2008
Messages : 15
Points : 2
Points : 2
J'ai finalement trouvé la solution. Il fallait éditer le fichier suivant /etc/apparmor.d/usr.sbin.mysqld et y ajouter cette ligne /usr/lib/mysql/plugin/* rm,.
Le problème a été résolu mais je n'ai pas compris l'objectif de la manœuvre. Apparemment, apparmor était à l'origine du problème.

Merci ERIC pour tes suggestions.
20styles est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/07/2011, 18h58   #16
Membre Expert
 
Homme Eric Dureuil
Développeur informatique
Inscription : avril 2011
Messages : 853
Détails du profil
Informations personnelles :
Nom : Homme Eric Dureuil
Localisation : France, Isère (Rhône Alpes)

Informations professionnelles :
Activité : Développeur informatique
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : avril 2011
Messages : 853
Points : 1 332
Points : 1 332
cool tu peux passer en résolu alors
__________________
Eric Dureuil, développeur web, c/c++, java indépendant
soyons
pensez à mettre et
ericd69 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/07/2011, 10h29   #17
Invité de passage
 
Inscription : février 2008
Messages : 15
Détails du profil
Informations forums :
Inscription : février 2008
Messages : 15
Points : 2
Points : 2
Par défaut Pas de résultat après l'execution de la fonction

Bonjour,
je reviens encore.
En fait l'UDF mymail.c provient d'ici.
Je l'ai compilé et copié dans le dossier /usr/lib/mysql/plugin afin que mysql puisse le loader. La fonction mymail a été créée et je l'exécute sans erreur. Mais lorsque je vérifie le fichier mail.log, je constate que le mail n'a pas été envoyé, même pas de trace de l'envoi. On a l'impression qu'aucune fonction mail n'a été exécutée.

Merci d'avance pour votre aide
20styles est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/07/2011, 13h05   #18
Membre Expert
 
Homme Eric Dureuil
Développeur informatique
Inscription : avril 2011
Messages : 853
Détails du profil
Informations personnelles :
Nom : Homme Eric Dureuil
Localisation : France, Isère (Rhône Alpes)

Informations professionnelles :
Activité : Développeur informatique
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : avril 2011
Messages : 853
Points : 1 332
Points : 1 332
y a des trucs bizarres dans sa fonction...

exemple:
Code c/c++ :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
my_bool	mymail_init(UDF_INIT *initid, UDF_ARGS *args, char *message)
{
  IF (!(args->arg_count == 2 && args->arg_type[0] == STRING_RESULT && args->arg_type[1] == STRING_RESULT))
  {
    strncpy(message, ERRPARM, MYSQL_ERRMSG_SIZE);
    RETURN 1;
  }
 
  initid->maybe_null = 1;
  initid->ptr = (char*) malloc(0);
  IF(initid->ptr==NULL)
  {
    strncpy(message, ERRMEM, MYSQL_ERRMSG_SIZE);
    RETURN 1;
  }
  RETURN 0;
}
Le type prend une structure UDF_INIT en entrée... se fout de la valeur du pointeur et la remplace par celle d'un malloc(0) qui retourne 0 ou null donc... il teste juste en dessous si c'est null et si oui dit qu'il y a une erreur ou ne fait rien sinon...
donc cette fonction renvoie toujours une erreur en théorie soit due au premier if, soit si lui n'a rien déclenché... drôle de fonction d'initialisation

dans celle de désinstallation, il fait un free sur une valeur sans s'assurer qu'elle n'est pas null et ne va donc pas provoquer une erreur (faut dire qu'on s'assure qu'elle est null dans celle d'initialisation)

bref à revoir sérieusement je pense...
__________________
Eric Dureuil, développeur web, c/c++, java indépendant
soyons
pensez à mettre et
ericd69 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/07/2011, 20h22   #19
Invité de passage
 
Inscription : février 2008
Messages : 15
Détails du profil
Informations forums :
Inscription : février 2008
Messages : 15
Points : 2
Points : 2
Aide moi à y mettre de l'ordre stp. J'en ai urgemment besoin
20styles est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/07/2011, 02h27   #20
Membre Expert
 
Homme Eric Dureuil
Développeur informatique
Inscription : avril 2011
Messages : 853
Détails du profil
Informations personnelles :
Nom : Homme Eric Dureuil
Localisation : France, Isère (Rhône Alpes)

Informations professionnelles :
Activité : Développeur informatique
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : avril 2011
Messages : 853
Points : 1 332
Points : 1 332
le vrai code nettoyé est ici

la doc sur comment implémenter une UDF et les sous-fonctions optionnelles selon le contexte d'utilisation

si tu as besoin d'explications pour bien comprendre certaines choses, contacte moi en mp
__________________
Eric Dureuil, développeur web, c/c++, java indépendant
soyons
pensez à mettre et
ericd69 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 04h57.


 
 
 
 
Partenaires

Hébergement Web