Problème avec UPDATE

Résolu
polando -  
 Utilisateur anonyme -
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

Utilisateur anonyme
 
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
 
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   Statut Membre Dernière intervention  
 
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
 
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   Statut Membre Dernière intervention  
 
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
 
de rien :)
0