Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD > PHP & MySQL
PHP & MySQL Forum d'entraide sur les fonctions MySQL avec PHP. Avant de poster -> FAQ MySQL, Cours MySQL et Sources MySQL. Pour les questions concernant le moteur MySQL plutôt que les fonctions PHP, merci d'utiliser le forum 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 27/01/2011, 17h04   #1
Membre du Club
 
Inscription : décembre 2005
Messages : 113
Détails du profil
Informations forums :
Inscription : décembre 2005
Messages : 113
Points : 57
Points : 57
Par défaut Erreur mySQL avec PHP

Bonjour à tous,

Aujourd'hui j'ai mis en prod un petit CMS développé par mes soins sur un II6/mySQL 5.x/php 5.2.x. Je travaille avec le framework Codeigniter. Mon niveau d'erreur est défini à E_ALL.

J'ai été surpris de voir que PHP me retournait des erreurs en provenance de mySQL sur les types de champs mySQL alors que je ne les avaient dans ma config de développement (LAMP chez ovh).

Je m'explique :

Par exemple,

j'ai un champ "ordre" INT(2) et lorsque que j'envoie une chaîne vide lors d'un INSERT, PHP m'affiche une erreur comme quoi mySQL attends un entier et non pas une chaîne. (Ce que y plutôt normal en fin de compte). Alors que dans mon environnement de développement je n'ai aucune alerte de ce type.

Ce que je cherche à comprendre, c'est quelle est la différence de configuration php ou mySQL qui conduit à ces deux comportements différents.

Bref je voudrais savoir comment afficher systématiquement ces alertes/erreurs afin d'être plus vigilant quant à la définition et au typage des mes champs.

Merci d'avance.
Al3x est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/01/2011, 23h42   #2
Membre Expert
 
Avatar de nosferapti
 
Inscription : avril 2009
Messages : 1 157
Détails du profil
Informations forums :
Inscription : avril 2009
Messages : 1 157
Points : 1 129
Points : 1 129
montre nous le message d'erreur entier
__________________
GNAP !
nosferapti est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/01/2011, 09h44   #3
Membre du Club
 
Inscription : décembre 2005
Messages : 113
Détails du profil
Informations forums :
Inscription : décembre 2005
Messages : 113
Points : 57
Points : 57
je n'ai plus accès au message d'erreur car la machine de prod est dans un extranet...

Mais ce que disait le message php en substance était quelques chose de la sorte :

"Le type fournit pour le champ 'ordre' est incorrect, j'attends un entier"

J'ai dejà vu ce type d'alerte dans phpMyAdmin mais je n'avais encore jamais vu php me retourner ce genre de message lors des INSERT ou des UPDATE.
Al3x est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/01/2011, 10h49   #4
Membre chevronné
 
Inscription : juin 2004
Messages : 747
Détails du profil
Informations personnelles :
Âge : 28
Localisation : France, Loire Atlantique (Pays de la Loire)

Informations forums :
Inscription : juin 2004
Messages : 747
Points : 741
Points : 741
Bonjour,

Il y a clairement une différence de config entre les 2 environnements. Dans le fichier php.ini il y a cette clause qui est peut-être activée chez ton hébergeur en PROD :

Citation:
; Trace mode. When trace_mode is active (=On), warnings for table/index scans and
; SQL-Errors will be displayed.
; http://php.net/mysql.trace-mode
mysql.trace_mode = Off
__________________
  • Mon blog PHP : http://blog.alterphp.com
  • "Peace cannot be kept by force, it can only be achieved by Understanding" -- Albert Einstein
pc.bertineau est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/01/2011, 11h51   #5
Membre du Club
 
Inscription : décembre 2005
Messages : 113
Détails du profil
Informations forums :
Inscription : décembre 2005
Messages : 113
Points : 57
Points : 57
Citation:
Envoyé par pc.bertineau Voir le message
Bonjour,Il y a clairement une différence de config entre les 2 environnements.
Merci pour ton coup de pouce !

C'est effectivement ce que je pense, mais il semble, selon le phpinfo qu'on m'avait transmis, que cette option est bien en 'off'.

Y-aurait t il un autre paramètre de config qui pourrait expliquer cet affichage d'erreurs ?

[EDIT]
J'ai mis mysql.trace_mode à 'On' dans ma config de dév et je n'ai pas les erreurs que j'ai vu en prod...
Al3x est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/01/2011, 14h57   #6
Membre chevronné
 
Inscription : juin 2004
Messages : 747
Détails du profil
Informations personnelles :
Âge : 28
Localisation : France, Loire Atlantique (Pays de la Loire)

Informations forums :
Inscription : juin 2004
Messages : 747
Points : 741
Points : 741
Alors peut-être regarder du côté de la conf MySql (my.cnf) : niveau de log différent notamment entre ta prod et ovh..
__________________
  • Mon blog PHP : http://blog.alterphp.com
  • "Peace cannot be kept by force, it can only be achieved by Understanding" -- Albert Einstein
pc.bertineau est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/01/2011, 15h55   #7
Membre du Club
 
Inscription : décembre 2005
Messages : 113
Détails du profil
Informations forums :
Inscription : décembre 2005
Messages : 113
Points : 57
Points : 57
Citation:
Envoyé par pc.bertineau Voir le message
Alors peut-être regarder du côté de la conf MySql (my.cnf) : niveau de log différent notamment entre ta prod et ovh..
je suis en train d'éplucher les variables mySQL pour voir ce qui pourrait expliquer un différence de comportement de la sorte.
Al3x est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/01/2011, 16h18   #8
Modérateur
 
Inscription : septembre 2010
Messages : 7 101
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 101
Points : 8 466
Points : 8 466
tu serais pas en mode strict, apres c'est a toi de bien formater les valeurs aussi,
c'est par exemple : WHERE id = 14 et pas WHERE id = '14'
si ton champs est du type int
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/01/2011, 16h44   #9
Membre du Club
 
Inscription : décembre 2005
Messages : 113
Détails du profil
Informations forums :
Inscription : décembre 2005
Messages : 113
Points : 57
Points : 57
Citation:
tu serais pas en mode strict
comme dit plus haut je suis en E_ALL

Citation:
apres c'est a toi de bien formater les valeurs aussi,
On est bien d'accord, mais l'idée c'est d'avoir en config de dév un maximum d'alertes afin de me sensibiliser à certaine config de champ un peu "laxiste".

j'ai vu une différence dans la conf, mais je doute que ca soit ca :

dans le dev :
display_errors STDOUT

et dans la prod :
display_errors On
Al3x est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/01/2011, 16h45   #10
Modérateur
 
Inscription : septembre 2010
Messages : 7 101
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 101
Points : 8 466
Points : 8 466
Citation:
Envoyé par Al3x Voir le message
comme dit plus haut je suis en E_ALL



On est bien d'accord, mais l'idée c'est d'avoir en config de dév un maximum d'alertes afin de me sensibiliser à certaine config de champ un peu "laxiste".

j'ai vu une différence dans la conf, mais je doute que ca soit ca :

dans le dev :
display_errors STDOUT

et dans la prod :
display_errors On
je parle du mode strict de mysql pas de celui de PHP
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/01/2011, 16h58   #11
Membre du Club
 
Inscription : décembre 2005
Messages : 113
Détails du profil
Informations forums :
Inscription : décembre 2005
Messages : 113
Points : 57
Points : 57
Citation:
Envoyé par stealth35 Voir le message
je parle du mode strict de mysql pas de celui de PHP
oops :-)

Ca me semble pas mal du tout comme piste ca !! je vais investiguer dans ce sens...
Al3x est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/01/2011, 14h19   #12
Membre du Club
 
Inscription : décembre 2005
Messages : 113
Détails du profil
Informations forums :
Inscription : décembre 2005
Messages : 113
Points : 57
Points : 57
Bingo !

Merci stealth35, le mode SQL était bien : STRICT_TRANS_TABLES !
Al3x 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 03h31.


 
 
 
 
Partenaires

Hébergement Web