Précédent   Forum des professionnels en informatique > Bases de données > MySQL > Requêtes
Requêtes Forum d'entraide sur les requêtes 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 09/01/2012, 22h28   #1
Nouveau Membre du Club
 
Inscription : juin 2005
Messages : 105
Détails du profil
Informations personnelles :
Âge : 31

Informations forums :
Inscription : juin 2005
Messages : 105
Points : 36
Points : 36
Envoyer un message via MSN à cels
Par défaut Erreur UPDATE, valeur du champs set a 0

Salut,

je rencontre une erreur etrange avec une de mes requetes. Il s'agit d'une UPDATE. Le premier champs que j'update est set a 0 des que je la lance, meme si sa valeur reste la meme.

Quand je fais ca:
Code :
1
2
 
UPDATE CARD SET CA_FIRSTNAME='laurent' WHERE CA_ID=23
ca fontionne correctement.
Des que j'update plusieurs champs, comme ceci par exemple:
Code :
1
2
 
UPDATE CARD SET CA_FIRSTNAME='laurent' AND CA_LASTNAME='dupont' WHERE CA_ID=23
La ca ne fonctionne plus. La valeur du champs CA_FIRSTNAME 'Laurent' est remplacee par 0. Je n'y comprends rien.
Pouvez vous m'eclairer ?
Merci,
Cyril
cels est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/01/2012, 09h45   #2
Expert Confirmé
 
Homme
Inscription : mai 2002
Messages : 1 657
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 29
Localisation : France, Rhône (Rhône Alpes)

Informations forums :
Inscription : mai 2002
Messages : 1 657
Points : 2 660
Points : 2 660
bonjour,

Dommage que MySql ne gère pas un minimum correctement les erreurs de syntaxes ...

il ne faut pas mettre un AND mais une virgule entre vos différentes colonnes à updater.
punkoff est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/01/2012, 18h02   #3
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
Citation:
Envoyé par punkoff Voir le message
bonjour,

Dommage que MySql ne gère pas un minimum correctement les erreurs de syntaxes ...

il ne faut pas mettre un AND mais une virgule entre vos différentes colonnes à updater.
il gère très bien les erreurs et ici en fait il n'y en a pas syntaxiquement parlant...

pour mysql, cels a voulu dire:
"met à jour la colonne CA_FIRSTNAME avec la valeur 'laurent' AND CA_LASTNAME='dupont' (qui vaut 0 puisque cette expression booléenne est fausse) pour les lignes où CA_ID=23

donc c'est comme si cels avait écrit:
Code sql :
UPDATE CARD SET CA_FIRSTNAME=0 WHERE CA_ID=23

alors qu'en fait, en effet, il aurait du écrire:
Code sql :
UPDATE CARD SET CA_FIRSTNAME='laurent', CA_LASTNAME='dupont' WHERE CA_ID=23

mais syntaxiquement parlant y a bien pas d'erreur... aucun interpréteur de langage ne pourra jamais déterminer si tu marques n'importe quoi, à partir du moment où tout ce qui est marqué est juste syntaxiquement

comme dans 99% des cas l'origine de l'erreur est entre le clavier et la chaise pas dans le logiciel
__________________
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 10
Vieux 10/01/2012, 18h30   #4
Expert Confirmé
 
Homme
Inscription : mai 2002
Messages : 1 657
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 29
Localisation : France, Rhône (Rhône Alpes)

Informations forums :
Inscription : mai 2002
Messages : 1 657
Points : 2 660
Points : 2 660
Bonjour,

Citation:
Envoyé par ericd69 Voir le message
mais syntaxiquement parlant y a bien pas d'erreur... aucun interpréteur de langage ne pourra jamais déterminer si tu marques n'importe quoi, à partir du moment où tout ce qui est marqué est juste syntaxiquement

comme dans 99% des cas l'origine de l'erreur est entre le clavier et la chaise pas dans le logiciel
Depuis quand 'laurent' est une valeur booléenne ?
il manque un test entre laurent et quelque chose pour que cela est un sens quelconque.

Enfin, dans l'explication du process c'est effectivement ce qui se passe.

Code :
1
2
3
4
 
CREATE TABLE t_syntaxe (c1 integer, c2 integer, c3 integer);
 
INSERT INTO t_syntaxe VALUES (1, 2, 3);
Code :
1
2
 
UPDATE t_syntaxe SET c2 = 6 AND c3 = 4 WHERE c1 = 1;
Code :
1
2
3
4
5
6
7
8
9
10
 
ERREUR:  l'argument de AND doit être de type booléen, et non du type integer
LINE 1: update t_syntaxe set c2 = 6 and c3 = 4 where c1 = 1;
                                  ^
 
********** Erreur **********
 
 
État SQL :42804
Caractère : 27
punkoff est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/01/2012, 18h44   #5
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
le problème c'est que des fois ce qui nous parait évident ne l'est pas pour un analyseur syntaxique et inversement

normalement je suis d'accord ça devrait lui sortir une erreur sauf si, pour une sombre bizarreté, il le voit comme ça lui...

peut être un bug sur les priorités d'opérateurs en fonction de la version de mysql... je crois que tu peux régler certaines conversion implicite...ou le niveau d'erreur ou de warning, ce qui peut expliquer la non présence d'erreur chez lui

bref, on en revient au problème de départ...

quand on lit pas la syntaxe des commandes dans la doc officielle (google, est ton ami... ou un autre soyons pas sectaire), on pleure ensuite...

__________________
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 12/01/2012, 14h50   #6
Nouveau Membre du Club
 
Inscription : juin 2005
Messages : 105
Détails du profil
Informations personnelles :
Âge : 31

Informations forums :
Inscription : juin 2005
Messages : 105
Points : 36
Points : 36
Envoyer un message via MSN à cels
Salut,

merci en tout cas, ct bien une erreur de ma part. C'est vrai que si j'avais eu un message ca m'aurait saute aux yeux. Mais comme vous dites, la syntax etait correcte...

Mais c resolu ! Merci a tous.

Cyril
cels 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 09h23.


 
 
 
 
Partenaires

Hébergement Web