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 20/12/2011, 18h20   #1
Invité de passage
 
Philippe Odent
Inscription : janvier 2010
Messages : 8
Détails du profil
Informations personnelles :
Nom : Philippe Odent

Informations forums :
Inscription : janvier 2010
Messages : 8
Points : 0
Points : 0
Par défaut Acceder au code d'une fonction - show create ne fonctionne pas

Bonjour à tous,

j'essaye de retrouver le code d'une fonction, qui par ailleurs fonctionne très bien, avec la syntaxe SHOW CREATE FUNCTION \G.

Sans le paramètre \G, cela donne:

mysql> show create function page_html;
+-----------+----------+-----------------+
| Function | sql_mode | Create Function |
+-----------+----------+-----------------+
| page_html | | NULL |
+-----------+----------+-----------------+
1 row in set


Mais avec le paramètre \G, cela donne:

mysql> show create function page_html\G
-> ;
1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '\G' at line 1


Sauriez-vous m'aider ?
Merci par avance...
Phil
stones001 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/12/2011, 09h35   #2
ced
Rédacteur/Modérateur

 
Avatar de ced
 
Homme Cédric Duprez
Inscription : avril 2002
Messages : 3 823
Détails du profil
Informations personnelles :
Nom : Homme Cédric Duprez
Âge : 36
Localisation : France, Loiret (Centre)

Informations professionnelles :
Secteur : Agroalimentaire - Agriculture

Informations forums :
Inscription : avril 2002
Messages : 3 823
Points : 6 426
Points : 6 426
Bonjour,

Interroge plutôt le catalogue de MySQL : http://cedric-duprez.developpez.com/...talogue/#LIX-A
__________________
Rédacteur / Modérateur SGBD
Mes tutoriels et la FAQ MySQL

----------------------------------------------------
Pensez aux balises code et au tag
Je ne réponds pas aux questions techniques par message privé, les forums sont là pour ça
ced est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/12/2011, 11h04   #3
Invité de passage
 
Philippe Odent
Inscription : janvier 2010
Messages : 8
Détails du profil
Informations personnelles :
Nom : Philippe Odent

Informations forums :
Inscription : janvier 2010
Messages : 8
Points : 0
Points : 0
Bonjour,

J'ai effectivement déjà regardé dans la table ROUTINES et notamment le champ ROUTINE_DEFINTION qui est supposé contenir le corps de la fonction.
Ce champ comporte la valeur NULL, ce qui est impossible puisque la fonction s’exécute correctement.

Code :
1
2
3
4
5
6
7
mysql> SELECT specific_name,routine_definition FROM information_schema.routines;
+---------------+--------------------+
| specific_name | routine_definition |
+---------------+--------------------+
| page_html     | NULL               |
+---------------+--------------------+
1 row IN SET
Une idée ?
Merci
stones001 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/12/2011, 11h32   #4
ced
Rédacteur/Modérateur

 
Avatar de ced
 
Homme Cédric Duprez
Inscription : avril 2002
Messages : 3 823
Détails du profil
Informations personnelles :
Nom : Homme Cédric Duprez
Âge : 36
Localisation : France, Loiret (Centre)

Informations professionnelles :
Secteur : Agroalimentaire - Agriculture

Informations forums :
Inscription : avril 2002
Messages : 3 823
Points : 6 426
Points : 6 426
Quelle est ta version de MySQL ?
Parce qu'il y a un bug à ce sujet (valeur NULL dans le catalogue) qui a été résolu sur les versions 5.0.24 et 5.1.12.

Autre piste, es-tu sûr d'avoir les privilèges suffisants pour voir le corps de la fonction ?
__________________
Rédacteur / Modérateur SGBD
Mes tutoriels et la FAQ MySQL

----------------------------------------------------
Pensez aux balises code et au tag
Je ne réponds pas aux questions techniques par message privé, les forums sont là pour ça
ced est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/12/2011, 11h37   #5
Invité de passage
 
Philippe Odent
Inscription : janvier 2010
Messages : 8
Détails du profil
Informations personnelles :
Nom : Philippe Odent

Informations forums :
Inscription : janvier 2010
Messages : 8
Points : 0
Points : 0
La version de mon hébergeur est:
Version du serveur: 5.0.92-community
Version du protocole: 10
stones001 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/12/2011, 11h47   #6
ced
Rédacteur/Modérateur

 
Avatar de ced
 
Homme Cédric Duprez
Inscription : avril 2002
Messages : 3 823
Détails du profil
Informations personnelles :
Nom : Homme Cédric Duprez
Âge : 36
Localisation : France, Loiret (Centre)

Informations professionnelles :
Secteur : Agroalimentaire - Agriculture

Informations forums :
Inscription : avril 2002
Messages : 3 823
Points : 6 426
Points : 6 426
Alors ce serait un problème de privilèges, surtout s'il s'agit d'une base hébergée...
__________________
Rédacteur / Modérateur SGBD
Mes tutoriels et la FAQ MySQL

----------------------------------------------------
Pensez aux balises code et au tag
Je ne réponds pas aux questions techniques par message privé, les forums sont là pour ça
ced est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/12/2011, 12h55   #7
Membre Expert
 
Homme Eric Dureuil
Développeur informatique
Inscription : avril 2011
Messages : 874
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 : 874
Points : 1 361
Points : 1 361
salut,

vu que tu es hébergé, y a des chances que tu ais, en effet, un problème de privilèges...

le champs dont tu parles n'est qu'indicatif, il me semble, car la routine (procédure ou fonction utilisateur) est compilée et le résultat est stocké ailleurs que dans cette colonne...
__________________
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 21/12/2011, 15h08   #8
Invité de passage
 
Philippe Odent
Inscription : janvier 2010
Messages : 8
Détails du profil
Informations personnelles :
Nom : Philippe Odent

Informations forums :
Inscription : janvier 2010
Messages : 8
Points : 0
Points : 0
Bonjour,
Je confirme que le code de la fonction est bien inscrit en clair dans le champ ROUTINE_DEFINTION de la table ROUTINES car je viens de créer une fonction bidon et je peux la voir en clair avec un SELECT.
Le probleme semble venir du fait que le "propriétaire" de la fonction enregistré dans le champ "DEFINER" de la table ROUTINES soit différent du compte utilisateur que je suis actuellement.

Dans le champ DEFINER de la fonction que je tente vainement de consulter, il est inscrit user@adresseip et pour des raisons que j'ignore, le compte utilisateur que j'ai actuellement est vu comme user@adresseip.numericable.fr.
Pour le moteur MYSQL de mon hébergeur, c'est donc 2 comptes distincts :-(

J'ai tenté de modifier le contenu du champ DEFINER avec le code suivant:

Code :
UPDATE `mysql`.`proc` p SET definer = 'user@adresseip.numericable.fr' WHERE definer='user@adresseip'
mais j'ai une erreur indiquant que je n'ai pas les droits pour faire un UPDATE de la table mysql.proc

Je ne sais pas comment faire et je ne suis pas sur que mon hébergeur sache modifier les droits de ma propre fonction.

Comment puis je me configurer mon routeur/PC pour me présenter comme user@adresseip et non user@adresseip.numericable.fr ?
La config de mon routeur me rajoute automatiquement mon nom de domaine et je n'ai pas la possibilité de le modfier....

Grrrr....
stones001 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/12/2011, 17h04   #9
Membre Expert
 
Homme Eric Dureuil
Développeur informatique
Inscription : avril 2011
Messages : 874
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 : 874
Points : 1 361
Points : 1 361
tu es pas sensé modifier les tables catalogues sans avoir les droits voulus, ce qui est généralement presque jamais le cas sur un mutu...

à part faire un drop de la fonction et la recréer en définissant explicitement le definer tu peux pas faire grand chose... à supposer que tu ais, là encore, le droit de le faire...

après, si c'est une fonction d'un api qu'utilise ton hébergeur... là ça va poser des pb
__________________
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é
Outils de la discussion



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


 
 
 
 
Partenaires

Hébergement Web