Problème avec UPDATE

Résolu/Fermé
polando - 13 févr. 2014 à 10:21
 Utilisateur anonyme - 13 févr. 2014 à 14:43
Bonjour,

J'ai un problème avec le commande UPDATE pour modifier une valeur

Voici ma table:


+--------+--------------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+--------+---------------+------+-----+---------+-------+
| name | varchar(20) | NO | PRI | NULL | |
| status | enum('0','1') | NO | | 1 | |
+--------+--------------------+------+-----+---------+-------+
2 rows in set (0.00 sec)

J'aimerai changé le Valeur '1' a '0' dans 'status' et colone 'Default'

J'utilise donc un UPDATE:


UPDATE instance SET Default='0' WHERE Field=status;

Mais j'ai ce message d'erreur :


ERROR 1064 (42000): 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 'Default='0' WHERE Field=status' at line 1

Des idées ?
Est-ce que un REPLACE serai mieux a utilisé ?
A voir également:

4 réponses

Bonjour

Default est un mot réservé mysql.Tu ferais mieux de choisir un autre nom pour tes champs (comme Null et peut-être les autres, je n'ai pas vérifié).
Si tu veux les garder, tu peux quand même, mais entoure les noms de tables ou de champs avec des accents graves (Alt Gr 7, pas l'apostrophe du 4) :

UPDATE instance SET `Default`='0' WHERE Field='status';


De plus, comme status est, lui, une valeur, il faut le mettre entre apostrophes (du 4) sinon il sera pris comme un nom de champ.
1
Utilisateur anonyme
13 févr. 2014 à 12:06
J'ai soudain un gros doute sur ce que tu essayes de faire... Tu ne serais pas en train d'essayer de modifier la définition d'une table, plutôt que ses données ? Dans ce cas, il faut une requête ALTER qui n'a aucun rapport avec un UPDATE.
0
polando Messages postés 2 Date d'inscription jeudi 13 février 2014 Statut Membre Dernière intervention 13 février 2014
Modifié par polando le 13/02/2014 à 12:15
Merci de m'aider, et ça avance !
En effet je n'avais pas pensé a essayer avec l'apostrophe du 7.


mysql> UPDATE instance SET 'Default'='0' WHERE Field='status';
ERROR 1054 (42S22): Unknown column 'Field' in 'where clause'

alors j'essai avec l'apostrophe du 7 autour de Field:


mysql> UPDATE instance SET 'Default'='0' WHERE 'Field'='status';
ERROR 1054 (42S22): Unknown column 'Field' in 'where clause'

Même souci ...
Je vois que le nom des colones ne sont pas idéaux, cependant ce n'est pas moi qui a crée cette base ...

EDIT: on ne vois pas les différences d'apostrophe sur mon post ...
0
Utilisateur anonyme
13 févr. 2014 à 13:28
Pour les apostrophes qui ne sont pas différenciés, c'est habituel. Ce site a une manière bien particulière de 'bricoler' les caractères spéciaux, je me demande pourquoi mais je l'ai toujours connu comme ça. Pour voir ces accents graves, il faut mettre l'entité HTML correspondante. Pour ce caractère, c'est `
je n'avais pas pensé a essayer avec l'apostrophe du 7 Dommage, c'est pourtant la syntaxe normale de mysql. Ce n'est pas un truc 'à essayer', c'est ce qui est prévu dans la syntaxe du langage, ça fait quand même partie des règles de base.

Pour en arriver à ton 'unknown column', je pense que c'est parce que ce champ n'existe effectivement pas. Je pense, comme je l'ai dit dans ma remarque de 12h06, que tu essayes non pas de modifier une valeur de ta table, mais sa définition.
Danc ce cas, il faut faire :
ALTER TABLE  instance CHANGE  status  status ENUM(  '0',  '1' ) NOT NULL DEFAULT  '0'


Mais normalement, ceci est facile à faire à la main avec php myadmin. Personnellement, je n'ai jamais eu besoin d'écrire une requête comme ça.
0
polando Messages postés 2 Date d'inscription jeudi 13 février 2014 Statut Membre Dernière intervention 13 février 2014
13 févr. 2014 à 14:36
En effet c'est un ALTER TABLE qu'il faut. Comme tu a pu remarquer je suis loin d'être un pro en SQL.

Cela aurai surement été plus simple avec PhpMyAdmin, cependant la situation de mon serveur sur le réseau aurai rendu son accès compliquer depuis mon poste physique.

Je te remercie de m'avoir aidé.
Sujet résolu.
0
Utilisateur anonyme
13 févr. 2014 à 14:43
de rien :)
0