|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Invité de passage
![]() Philippe Odent Inscription : janvier 2010 Messages : 8 ![]() |
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 |
|
|
00
|
|
|
#2 |
![]() ![]() ![]() Cédric DuprezInscription : avril 2002 Messages : 3 823 ![]() |
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
|
|
|
00
|
|
|
#3 | ||
|
Invité de passage
![]() Philippe Odent Inscription : janvier 2010 Messages : 8 ![]() |
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 :
Merci |
||
|
|
00
|
|
|
#4 |
![]() ![]() ![]() Cédric DuprezInscription : avril 2002 Messages : 3 823 ![]() |
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
|
|
|
00
|
|
|
#5 |
|
Invité de passage
![]() Philippe Odent Inscription : janvier 2010 Messages : 8 ![]() |
La version de mon hébergeur est:
Version du serveur: 5.0.92-community Version du protocole: 10 |
|
|
00
|
|
|
#6 |
![]() ![]() ![]() Cédric DuprezInscription : avril 2002 Messages : 3 823 ![]() |
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
|
|
|
00
|
|
|
#7 |
|
Membre Expert
![]() Eric DureuilDéveloppeur informatique Inscription : avril 2011 Messages : 874 ![]() |
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
|
|
|
00
|
|
|
#8 |
|
Invité de passage
![]() Philippe Odent Inscription : janvier 2010 Messages : 8 ![]() |
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' 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.... |
|
|
00
|
|
|
#9 |
|
Membre Expert
![]() Eric DureuilDéveloppeur informatique Inscription : avril 2011 Messages : 874 ![]() |
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
|
|
|
00
|
Copyright © 2000-2012 - www.developpez.com