création base sql

Eléphanteau du PHP | 16 Messages

30 mai 2007, 14:36

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

jed
Eléphant du PHP | 218 Messages

30 mai 2007, 14:47

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.

Invité
Invité n'ayant pas de compte PHPfrance

30 mai 2007, 15:07

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

jed
Eléphant du PHP | 218 Messages

30 mai 2007, 15:22

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. ;)

Administrateur PHPfrance
Administrateur PHPfrance | 3088 Messages

30 mai 2007, 15:38

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 ?

jed
Eléphant du PHP | 218 Messages

30 mai 2007, 15:45

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.

Administrateur PHPfrance
Administrateur PHPfrance | 3088 Messages

30 mai 2007, 15:50

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)".

jed
Eléphant du PHP | 218 Messages

30 mai 2007, 15:53

h et bien j'aurais encore appris quelque chose aujourd'hui :P . Désolé pour mes déductions trop rapides...

Eléphanteau du PHP | 16 Messages

30 mai 2007, 15:53

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]

Administrateur PHPfrance
Administrateur PHPfrance | 3088 Messages

30 mai 2007, 15:55

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).

Eléphanteau du PHP | 16 Messages

30 mai 2007, 16:08

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

Administrateur PHPfrance
Administrateur PHPfrance | 3088 Messages

30 mai 2007, 16:10

Ç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 ;

Eléphanteau du PHP | 16 Messages

30 mai 2007, 16:46

Merci tout fonctionne normalement maintenant, c'est vraiment très gentil à vous de m'avoir accordé un peu de temps.