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 :

Fonction stockée créée, mais impossible de l'exécuter !


Sujet :

SQL Procédural MySQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 21
    Par défaut Fonction stockée créée, mais impossible de l'exécuter !
    Bonjour,

    Après une bonne semaine à tourner en rond sur Google, le site officiel de MySQL, et les forums, je me tourne vers vous pour l'aide, ou l'explication de ce phénomène que je n'arrive pas à comprendre.
    Le serveur est sous Debian, j'utilise MySQL: 5.1.49-0.
    Connecté au serveur par Putty, en root.


    Le problème : Je créé une fonction stockée, mais je ne peux pas l'exécuter.


    Création de la fonction stockée :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    delimiter |
    CREATE FUNCTION hello(s CHAR(20)) RETURNS CHAR(50)
    RETURN CONCAT('Hello, ',s,'!');
    |
    OK, la fonction stockée est bien créée, puisque je la vois sous les tables de la BDD.


    Appel :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    SELECT hello("world");

    Résultat :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    #1305 - FUNCTION hello does not exist

    J'utilise pourtant les fonction stockée depuis un moment, mais ce serveur sous Debian ne semble pas en vouloir ! Et je ne comprends vraiment pas où ça cloche.

    Toute aide, ou information est la bienvenue, je ne sais plus où chercher.
    D'avance merci :)

  2. #2
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 9
    Par défaut
    Citation Envoyé par Petit-Bonhomme Voir le message
    Bonjour,

    Après une bonne semaine à tourner en rond sur Google, le site officiel de MySQL, et les forums, je me tourne vers vous pour l'aide, ou l'explication de ce phénomène que je n'arrive pas à comprendre.
    Le serveur est sous Debian, j'utilise MySQL: 5.1.49-0.
    Connecté au serveur par Putty, en root.


    Le problème : Je créé une fonction stockée, mais je ne peux pas l'exécuter.


    Création de la fonction stockée :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    delimiter |
    CREATE FUNCTION hello(s CHAR(20)) RETURNS CHAR(50)
    RETURN CONCAT('Hello, ',s,'!');
    |
    OK, la fonction stockée est bien créée, puisque je la vois sous les tables de la BDD.


    Appel :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    SELECT hello("world");

    Résultat :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    #1305 - FUNCTION hello does not exist

    J'utilise pourtant les fonction stockée depuis un moment, mais ce serveur sous Debian ne semble pas en vouloir ! Et je ne comprends vraiment pas où ça cloche.

    Toute aide, ou information est la bienvenue, je ne sais plus où chercher.
    D'avance merci
    cela ne serait pas un probleme de droit ?
    http://forums.mysql.com/read.php?46,...449#msg-229449
    http://www.roseindia.net/mysql/mysql...unctions.shtml
    sinon pas de probleme d'espace ?

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 21
    Par défaut
    Bonjour,

    Je ne pense pas que ce soit un problème d'espace, j'ai vu un post à ce sujet, et j'ai tout de suite vérifié. Je ne fais pas d'espace entre le nom de la fonction, et la parenthèse.

    Par contre, un problème de droit semble plus plausible.
    Je me connecte au serveur distant ( sous Debian Lenny ) par putty, en 'root'.
    Voici les droits d'utilisateur MySQL :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Utilisateur     Serveur        Mot de passe     Privilèges globaux          "Grant"  	
    root             127.0.0.1      Oui                   ALL PRIVILEGES             Oui

    Tout les droits sont activés "GRANT", "SUPER", "PROCESS" etc...
    En théorie, ça devrait fonctionner,
    Sur cette adresse, on peut lire :
    Creating a CallableStatement for a
    PROCEDURE XXX
    without proper Privilegese
    (needs GRANT SUPER ON *.*)
    result in "FUCNTION XXX does not exist" not found.

    Which is misleading as PROCEDURE XXX exist but
    can not be accessed.
    GRANT SUPER ON *.* ?
    Faut-il que je mette le joker '*' sur le champ serveur ?
    Je vais essayer, on verra bien.

    Si tu as d'autres pistes... n'hésites pas

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 9
    Par défaut
    Citation Envoyé par Petit-Bonhomme Voir le message
    Bonjour,

    Je ne pense pas que ce soit un problème d'espace, j'ai vu un post à ce sujet, et j'ai tout de suite vérifié. Je ne fais pas d'espace entre le nom de la fonction, et la parenthèse.

    Par contre, un problème de droit semble plus plausible.
    Je me connecte au serveur distant ( sous Debian Lenny ) par putty, en 'root'.
    Voici les droits d'utilisateur MySQL :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Utilisateur     Serveur        Mot de passe     Privilèges globaux          "Grant"  	
    root             127.0.0.1      Oui                   ALL PRIVILEGES             Oui

    Tout les droits sont activés "GRANT", "SUPER", "PROCESS" etc...
    En théorie, ça devrait fonctionner,
    Sur cette adresse, on peut lire :


    GRANT SUPER ON *.* ?
    Faut-il que je mette le joker '*' sur le champ serveur ?
    Je vais essayer, on verra bien.

    Si tu as d'autres pistes... n'hésites pas
    tu dis que tu te connectes sur le serveur distant mais il est pas distant puisque tu es en localhost ce que je comprends pas ...

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 21
    Par défaut
    Il s'agit d'un serveur dédié ( serveur web ). Je m'y connecte soit par Putty, soit par PhpMyAdmin, pour administrer le serveur MySQL.

    Les utilisateurs MySQL sont tous en serveur='localhost' ( pour des raisons de sécurité ), ils sont utilisés par PHP qui est installé sur la machine.

    Cela proviendrait-il d'ici ?

    Je me connecte à PhpMyAdmin en root, j'ai les accès à toutes les DB, je n'ai aucune restriction excepté l'exécution des Procédure/Fonction stockés, que je peux créer ou voir d'ailleurs.

    Est-ce qu'il manque quelque chose au niveau des utilisateurs ?

    Merci pour ton aide.

  6. #6
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 9
    Par défaut
    Citation Envoyé par Petit-Bonhomme Voir le message
    Il s'agit d'un serveur dédié ( serveur web ). Je m'y connecte soit par Putty, soit par PhpMyAdmin, pour administrer le serveur MySQL.

    Les utilisateurs MySQL sont tous en serveur='localhost' ( pour des raisons de sécurité ), ils sont utilisés par PHP qui est installé sur la machine.

    Cela proviendrait-il d'ici ?

    Je me connecte à PhpMyAdmin en root, j'ai les accès à toutes les DB, je n'ai aucune restriction excepté l'exécution des Procédure/Fonction stockés, que je peux créer ou voir d'ailleurs.

    Est-ce qu'il manque quelque chose au niveau des utilisateurs ?

    Merci pour ton aide.
    tu veux me dire qu'ils peuvent exécuter tes fonctions et pas toi ?
    mais même si tu les créées ou si tu les utilisent en préfixant par le nom de la base ?

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

Discussions similaires

  1. [2014] 2 Sum mais "Impossible d'exécuter une fonction d'agrégation"
    Par pompom75 dans le forum Développement
    Réponses: 5
    Dernier message: 06/02/2015, 09h13
  2. Réponses: 2
    Dernier message: 20/09/2014, 15h07
  3. [RHEL5&10G] Base créée mais impossible à démarrer
    Par Leeloo_Multiboot dans le forum Installation
    Réponses: 5
    Dernier message: 24/04/2008, 15h32
  4. afficher la définition d'une fonction stockée
    Par bdkiller dans le forum PostgreSQL
    Réponses: 2
    Dernier message: 03/09/2004, 13h28
  5. Export des fonctions stockées
    Par bob_doulz dans le forum Oracle
    Réponses: 5
    Dernier message: 20/07/2004, 11h18

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