Changer sql_mode via php

Fermé
juanou Messages postés 137 Date d'inscription vendredi 28 novembre 2008 Statut Membre Dernière intervention 23 août 2013 - 31 mai 2009 à 19:36
 le père - 31 mai 2009 à 22:05
Bonjour,

En passant par l'interface phpmyadmin, je parviens sans problème à changer le mode sql de ma base de données, en utilisant la commande sql suivante :
SET sql_mode='STRICT_TRANS_TABLES';


Je pensais donc pouvoir en faire autant par le biais d'un fichier php avec ce petit bout de code :
mysql_query("SET sql_mode='STRICT_TRANS_TABLES';") ;


Mais ça ne marche pas.
Le sql mode est bien modifé, mais il passe à "". (Même pas à NULL)

Quelqu'un sait-il comment faire pour changer le mode sql par un script php ?
Merci
A voir également:

7 réponses

Bonjour

Juste une idée... Fais-tu tes essais phpmyadmin / script PHP sur le même serveur ? car le STRICT_TRANS_TABLES n'existe que depuis la version 5.0.2 de mysql.
0
juanou Messages postés 137 Date d'inscription vendredi 28 novembre 2008 Statut Membre Dernière intervention 23 août 2013 58
31 mai 2009 à 20:28
Tiens, revoilà le père !
Merci de m'aider là-dessus aussi.

Oui, je fais mes essais sur le même serveur.
Et je suis surpris que tu me dises que le STRICT_TRANS_TABLES n'existe que depuis mysql 5.0.2, parce que sur ce serveur je tourne avec la version 5.1.30, et qu'il semble s'adapter au sql_mode que je lui indique
0
Je ne connaissais rien des subtilités de sql_mode avant ta question, mais voilà ce que j'ai trouvé dans ma doc mysql :
STRICT_TRANS_TABLES 
If a value could not be inserted as given into a transactional table, abort the statement. For a non-transactional table, abort the statement if the value occurs in a single-row statement or the first row of a multiple-row statement. More detail is given later in this section. (New in MySQL 5.0.2) 

Ils parlent aussi de l'option SESSION ou GLOBAL de cette commande, des droits qu'il faut avoir pour l'exécuter.
Chez moi je ne peux pas donner cette valeur, ni avec phpmyadmin, ni avec un script PHP.
Exécutes-tu le script PHP avec le même utilisateur que celui utilisé par phpmyadmin ? Affiches-tu l'éventuel message d'erreur avec un or die (mysql_error()) ?
0
juanou Messages postés 137 Date d'inscription vendredi 28 novembre 2008 Statut Membre Dernière intervention 23 août 2013 58
31 mai 2009 à 20:50
Tiens, je viens de me rendre compte que tu disais que la commande n'existait "que depuis mysql 5.0.2".
J'avais compris "plus depuis mysql 5.0.2", même si dans ma réponse j'ai bien recopié ce que tu as dit.
Je comprends donc mieux que ça marche aussi avec 5.1.30.
(Enfin peu importe)

Mais pour répondre à tes nouvelles questions :
* oui j'utilise le même utilisateur dans les deux cas (enfin il ne me semble pas en avoir plusieurs)
* non mysql_error() ne me retourne rien. D'ailleurs, si je fais echo mysql_query($ma_query), il affiche "1" (donc ok).
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Autres suggestions, juste pour voir les réactions (car je n'ai aucune explication raisonnable)
mysql_query("SET sql_mode='ANSI';") (ou un autre mode)
mysql_query("SET GLOBAL sql_mode='STRICT_TRANS_TABLES';")
et autre question : as-tu bien sélectionné une base ? (je suppose que oui, qu'il y aurait une erreur sinon)
0
juanou Messages postés 137 Date d'inscription vendredi 28 novembre 2008 Statut Membre Dernière intervention 23 août 2013 58
31 mai 2009 à 22:01
J'ai déjà pensé à tout ça moi aussi. Ca donne rien non plus.
Quant à la base, ça générerait effectivement une erreur si je ne l'avais pas fait, et le mode_sql ne passerait pas à "".

C'est bien bizarre tout ça !
0
À court d'idées, désolé. Bonne chance quand même.
0