Page 1 sur 2
Problème de syntax ?
Posté : 18 janv. 2007, 11:28
par Invité
Bonjour,
pour créer une table j'ai :
Code : Tout sélectionner
CREATE TABLE `membres` (
`id` mediumint( 9 ) NOT NULL AUTO_INCREMENT ,
`session` text NOT NULL ,
`pseudo` text NOT NULL ,
`passe` text NOT NULL ,
`email` text NOT NULL ,
KEY `id` ( `id` )
)ENGINE = MYISAM DEFAULT CHARSET = latin1 AUTO_INCREMENT = 1
et mysql me répond :
Code : Tout sélectionner
MySQL a répondu:
#1064 - You have an error in your SQL syntax near 'ENGINE = MYISAM
Cela veut dire quoi ?
merci de votre aide
Posté : 18 janv. 2007, 11:50
par albat
qu'il y a une erreur de syntaxe dans ton instruction juste avant le mot ENGINE.
Posté : 18 janv. 2007, 11:59
par Invité
ah bon
Mais il n'y a aucune erreur de syntaxe
tout passe correctement sur version mysql 4 et là,je vient de tester sur 3.23.58 !!
Posté : 18 janv. 2007, 12:04
par zeus
Peut être un soucis de compatibilité.
Je n'aime pas trop cette solutions mais MyISAM étant le type par défaut des tables MySQL, essaye d'enlever le ENGINE = MYISAM

Posté : 18 janv. 2007, 12:08
par albat
À tout hasard, pas d'espace nécessaire entre la ) et le ENGINE ?
Posté : 18 janv. 2007, 12:44
par Invité
En mettant un espace, cela ne change rien
en enlevant le ENGINE = MYISAM, j'ai encore une erreur, la même mais avec 'DEFAULT CHARSET
et si je retire DEFAULT CHARSET = latin1 AUTO_INCREMENT = 1
ca passe mais est ce que ca va poser problème ou pas ?
Posté : 18 janv. 2007, 12:45
par Invité
enfin,si je retire ENGINE = MYISAM DEFAULT CHARSET = latin1 AUTO_INCREMENT = 1
ca passe mais cela posera problème ou pas ?
Posté : 18 janv. 2007, 13:17
par zeus
Peut être qu'il n'est pas possible de définir ces options dans ta version
J'avoue que je ne suis pas persuadé de cette explication mais j'ai la flemme de chercher

Posté : 18 janv. 2007, 14:04
par Ajoloca
Bonjour,
Je viens de faire un copier/coller de ton instruction, et ça marche sans souci.
Code : Tout sélectionner
mysql> CREATE TABLE `membres` (
->
-> `id` mediumint( 9 ) NOT NULL AUTO_INCREMENT ,
-> `session` text NOT NULL ,
-> `pseudo` text NOT NULL ,
-> `passe` text NOT NULL ,
-> `email` text NOT NULL ,
-> KEY `id` ( `id` )
-> )ENGINE = MYISAM DEFAULT CHARSET = latin1 AUTO_INCREMENT = 1;
Query OK, 0 rows affected (0.00 sec)
mysql> show tables;
+----------------+
| Tables_in_test |
+----------------+
| membres |
+----------------+
1 row in set (0.00 sec)
mysql>
Juste pour voir, essaie ceci
Code : Tout sélectionner
CREATE TABLE `membres` (
`id` mediumint( 9 ) NOT NULL AUTO_INCREMENT PRIMARY KEY,
`session` text NOT NULL ,
`pseudo` text NOT NULL ,
`passe` text NOT NULL ,
`email` text NOT NULL
) ENGINE=MYISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1;
Posté : 18 janv. 2007, 14:15
par zeus
tout passe correctement sur version mysql 4 et là,je vient de tester sur 3.23.58 !!
Juste pour rappel, au cas où ça te dise quelque chose
Ajoloca. Tu connais mieux MySQL que moi

Posté : 18 janv. 2007, 14:26
par Ajoloca
Re,
Je pensais au fait que le champ "AUTO_INCREMENT" doit être unique dans une table et
être la clé primaire.
Dans sa déclaration, il ne met que "KEY", c'est pour ça que je lui dis
Juste pour voir, essaie ceci
car je ne suis pas sur que ce soit la raison.
J'ai aussi enlevé les espaces au tour des signes =, je ne suis pas sur que ça puisse avoir une incidence non plus, mais je l'ai toujours vu sans.
Quant à
Tu connais mieux MySQL que moi
Je ne dirais pas ça, bien au contraire, n'oublie pas que ça fais aprox. un an que je fais du MySQL.
Posté : 20 janv. 2007, 19:48
par Invité
Je reprend un peu ce topic !
J'ai donc fait comme ceci et je n'ai aucune erreur :
CREATE TABLE `membres` (
`id` mediumint( 9 ) NOT NULL AUTO_INCREMENT ,
`session` text NOT NULL ,
`pseudo` text NOT NULL ,
`passe` text NOT NULL ,
`email` text NOT NULL ,
PRIMARY KEY ( id )
) TYPE = MYISAM AUTO_INCREMENT = 1
Je n'ai aucune erreur émanant de mysql, mais est ce correct pour un espace membre ?
merci
Posté : 20 janv. 2007, 19:52
par Ajoloca
Bonjour,
Quelle utilité du champ 'session' ???
D'autres infos semblent plus pertinentes comme la date d'inscription, la dernière visite, le nombre de visites, etc...
Posté : 20 janv. 2007, 20:12
par Invité
Quel utilité du champ session ?
Et bien,voila,maintenant je me pose aussi la meme question
C'est un script d'espace membre que j'ai télécharger !
Je t'explique : le champ session sert pour les numéro de session qui sont updater a chaque reconnexion du membres pour qu'ils ai un numéro unique.... !!
mais avec ta réflexion utile,le champ "id" a une clée primaire,donc un numéro unique a chaque membre !
Donc pourquoi utiliser des chiffres "session" qui s'update a chaque fois ?
Posté : 20 janv. 2007, 20:15
par Ajoloca
Re,
Je te conseille fortement de laisser gérer l'unicité de la session à PHP.
Il est bien entendu possible de le faire soi-même mais, ....