Page 1 sur 1

création base sql

Posté : 30 mai 2007, 14:36
par franzy51
Bonjour à tous,
j'essai de créer une table dans ma base sql avec ce code, mais à chaque fois j'ai une erreur quelqu'un aurait-il une petite idée?
(hébergement mutualisé chez ovh)
CREATE TABLE prefix_membres(

id MEDIUMINT NOT NULL AUTO_INCREMENT ,
identifiant VARCHAR( 30 ) NOT NULL ,
pseudo VARCHAR( 15 ) NOT NULL ,
passe VARCHAR( 40 ) NOT NULL ,
email TEXT NOT NULL ,
valide BINARY NOT NULL ,
rang SMALLINT( 1 ) NOT NULL ,
INDEX ( id ) ;



MySQL a répondu:

#1064 - 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 'NOT NULL ,
rang SMALLINT( 1 ) NOT NULL ,
INDEX (id)' at line

Posté : 30 mai 2007, 14:47
par jed
Une clé BINARY ne peut pas être NOT NULL, réfléchis... De plus je sais pas si c'est normal mais tu n'as pas de clé primaire dans ta table.

Posté : 30 mai 2007, 15:07
par Invité
Bonjour, merci pour la réponse mais en fait je débute alors excuser moi si mes questions peuvent vous paraitre un peu idiote.
en fait voici le code complet de ce que j'essaie de mettre en place:

Code : Tout sélectionner

CREATE TABLE prefix_config ( attribut VARCHAR( 20 ) NOT NULL , valeur TEXT NOT NULL); CREATE TABLE prefix_membres ( id MEDIUMINT NOT NULL AUTO_INCREMENT , identifiant VARCHAR( 30 ) NOT NULL , pseudo VARCHAR( 15 ) NOT NULL , passe VARCHAR( 40 ) NOT NULL , email TEXT NOT NULL , valide BINARY NOT NULL , rang SMALLINT( 1 ) NOT NULL , INDEX (id); CREATE TABLE prefix_mps_envoyes ( id mediumint(9) NOT NULL AUTO_INCREMENT, pseudo_env varchar(15) NOT NULL, pseudo_rec varchar(15) NOT NULL, date int(11) NOT NULL, sujet varchar(233) NOT NULL, message text NOT NULL, KEY id (id); CREATE TABLE prefix_mps_recus ( id mediumint(9) NOT NULL AUTO_INCREMENT, lu binary(1) NOT NULL DEFAULT '0', pseudo_env varchar(15) NOT NULL, pseudo_rec varchar(15) NOT NULL, date int(11) NOT NULL, sujet varchar(233) NOT NULL, message text NOT NULL, KEY id (id);
j'ai mi la ligne valide BINARY NOT NULL à NULL mais cela ne fonctionne toujours pas

Posté : 30 mai 2007, 15:22
par jed
Non, ce n'est pas idiot mais illogique: un nombre binaire est soit 1 soit 0. Pour ton problème, ne met ni NULL ni NOT NULL et ça devrait résoudre le problème. ;)

Posté : 30 mai 2007, 15:38
par Hubert Roksor
Désolé jed mais j'ai bien peur que tu ne confondes BINARY avec BOOLEAN (qui au passage d'existe pas, ou plus?, sur MySQL). BINARY c'est plus ou moins l'équivalent de CHAR, et il se pourrait qu'il ne soit pas non plus supporté par ta version de MySQL (quelle est-elle au fait ?). Essaie un TINYBLOB à tout hasard ?

Posté : 30 mai 2007, 15:45
par jed
J'avoue que je ne me suis jamais servi d'un type BINARY donc il est possible que je me soit planté, mais a quoi sert il si ce n'est de stocker un nombre sous forme binaire? Quand à BOOLEAN il existe encore sur la version 5.0.27.

Posté : 30 mai 2007, 15:50
par Hubert Roksor
Je n'arrivais plus à le retrouver dans le manuel car il se cachait dans les types numériques. Il est utilisé comme synonyme pour "TINYINT(1)".

Posté : 30 mai 2007, 15:53
par jed
h et bien j'aurais encore appris quelque chose aujourd'hui :P . Désolé pour mes déductions trop rapides...

Posté : 30 mai 2007, 15:53
par franzy51
J'ai un peu tout essayé comme ceci mais cela ne fonctionne toujours pas

Code : Tout sélectionner

CREATE TABLE prefix_membres ( id MEDIUMINT NOT NULL AUTO_INCREMENT , identifiant VARCHAR( 30 ) NOT NULL , pseudo VARCHAR( 15 ) NOT NULL , passe VARCHAR( 40 ) NOT NULL , email TEXT NOT NULL , valide BLOB NOT NULL , rang SMALLINT( 1 ) NOT NULL , INDEX (id); ou encore CREATE TABLE prefix_membres ( id MEDIUMINT NOT NULL AUTO_INCREMENT , identifiant VARCHAR( 30 ) NOT NULL , pseudo VARCHAR( 15 ) NOT NULL , passe VARCHAR( 40 ) NOT NULL , email TEXT NOT NULL , valide BLOB NULL , rang SMALLINT( 1 ) NULL , INDEX (id); ou encore CREATE TABLE prefix_membres ( id MEDIUMINT NOT NULL AUTO_INCREMENT , identifiant VARCHAR( 30 ) NOT NULL , pseudo VARCHAR( 15 ) NOT NULL , passe VARCHAR( 40 ) NOT NULL , email TEXT NOT NULL , valide BLOB , rang SMALLINT( 1 ) , INDEX (id); y compris avec TINYBLOB;
ma version sql:MySQL - 4.0.25-standard-log et phpMyAdmin - OVH:Version du client MySQL: 5.0.32[/code]

Posté : 30 mai 2007, 15:55
par Hubert Roksor
4.0.25... désolé ma mémoire ne remonte pas aussi loin, je ne saurais pas dire :roll:

Mais je viens de remarquer que ta colonne s'appelait "valide", quel type de données y stockes-tu ? si ce ne sont que des 0 et des 1 alors utilise un TINYINT(1).

Posté : 30 mai 2007, 16:08
par franzy51
j'ai mis ce que vous m'avez dit:
requête SQL:

CREATE TABLE prefix_membres(

id MEDIUMINT NOT NULL AUTO_INCREMENT ,
identifiant VARCHAR( 30 ) NOT NULL ,
pseudo VARCHAR( 15 ) NOT NULL ,
passe VARCHAR( 40 ) NOT NULL ,
email TEXT NOT NULL ,
valide TINYINT( 1 ) NOT NULL ,
rang SMALLINT( 1 ) NOT NULL ,
INDEX ( id ) ;



MySQL a répondu:

#1064 - 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 '' at line 9

toujours une erreur, y compris avec NULL ou rien sur les lignes valide et rang

Posté : 30 mai 2007, 16:10
par Hubert Roksor
Ça c'est parce que tu n'as pas fermé ta première parenthèse (compte-les, il y a une parenthèse ouvrante de plus que fermante). Ajoute un ) avant le ;

Posté : 30 mai 2007, 16:46
par franzy51
Merci tout fonctionne normalement maintenant, c'est vraiment très gentil à vous de m'avoir accordé un peu de temps.