Requete Mysql

Résolu/Fermé
dragondark Messages postés 465 Date d'inscription samedi 23 février 2008 Statut Membre Dernière intervention 27 avril 2016 - 20 mai 2009 à 18:00
dragondark Messages postés 465 Date d'inscription samedi 23 février 2008 Statut Membre Dernière intervention 27 avril 2016 - 22 mai 2009 à 14:17
Bonjour,

j'ai effectuer une requete sous ma base de donné mais elle me retourne une erreur, j'ai beau chercher je ne trouve pas ou est-ce qu'elle se trouve

voila :

CREATE TABLE PLAYERS (
PL_ID INTEGER NOT NULL PRIMARY KEY,
PL_ISOPTIN BOOLEAN NOT NULL,
PL_CRYPT VARCHAR(161),
PL_EMAIL VARCHAR(250),
PL_UNSUBSCRIBEDATE DATE,
PL_SUBSCRIBDATE DATE NOT NULL DEFAULT curdate(),
PL_ISOK4DELIVERY BOOLEAN NOT NULL DEFAULT FALSE,
PL_RATING DECIMAL(10,2) NOT NULL DEFAULT "1"
) TYPE = InnoDB

il me retourne cette erreur

#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 'curdate(), PL_ISOK4DELIVERY BOOLEAN NOT NULL DEFAULT FALSE, PL_RATING DECIMAL(' at line 7


et me retourne ma requete sous cette forme

CREATE TABLE PLAYERS(
PL_ID INTEGER NOT NULL PRIMARY KEY ,
PL_ISOPTIN BOOLEAN NOT NULL ,
PL_CRYPT VARCHAR( 161 ) ,
PL_EMAIL VARCHAR( 250 ) ,
PL_UNSUBSCRIBEDATE DATE,
PL_SUBSCRIBDATE DATE NOT NULL DEFAULTcurdate( ) ,
PL_ISOK4DELIVERY BOOLEAN NOT NULL DEFAULTFALSE,
PL_RATING DECIMAL( 10, 2 ) NOT NULL DEFAULT "1"
) TYPE = InnoDB;


donc je penserais que cela vient du faite que la base racroche curedate et false a mes mots clef, mais je ne comprend pas prk
l'autre erreur possible et plus envisageable est curdate(), mais quand je fais un select curdate(), il me retourne bien un valleur, donc c'est bien compris par ma base de donnée

donc voila je ne voie pas ou est-ce que mon erreur peux se cacher :s
si vous pouvez me renseigner

cordialement
dragondark

4 réponses

Bonjour

Bizarre, en effet, j'ai fait la même constatation que toi.
Pour ce qui est des mots curdate et false raccrochés à default, ça ressemble à un bug de phpmyadmin, si tu le fais directement en php ils ne sont pas raccrochés.
Malheureusement , Après plusieurs essais, j'ai l'impression que tout bêtement les fonctions ne sont pas permises dans la clause DEFAULT. La doc, n'est pas bavarde à ce sujet, elle dit simplement que les fonctions peuvent être utilisées "en certains points des commandes SQL", ce qui sous-entend pas partout Et aucun commentaire du côté de la clause DEFAULT qui dit simplement DEFAULT default_value sans dire quoi que ce soit sur ce qui est autorisé comme default_value
Le problème est facilement contournable, mais c'est vrai que ça aurait été plus agréable de pouvoir le faire comme tu l'as écrit.
0
dragondark Messages postés 465 Date d'inscription samedi 23 février 2008 Statut Membre Dernière intervention 27 avril 2016 157
21 mai 2009 à 15:48
fâcheux en effet, on m'a conseiller de le faire en ligne de commande, je vais voir ce que cela donnera,

en tout cas default false fonction tout seul (en tout cas le true oui :)), on dirais simplement que curdate(), fais planter le reste du script

dans ces cas la tu ne sais pas ce que je pourrais mettre a la place de curdate? pour avoir la date actuelle?; car now() me renvoie trop de détail :s, je vais voir ce que je peux faire
0
Non, d'après mes essais, ce sont les fonctions qui sont interdites comme valeurs de DEFAULT, pas plus CURDATE qu'une autre.
Mais ça c'est pas un vrai problème, tu peux bien insérer la date courante en PHP, non ?
0
dragondark Messages postés 465 Date d'inscription samedi 23 février 2008 Statut Membre Dernière intervention 27 avril 2016 157
22 mai 2009 à 14:17
en faite j'ai resolue mon probleme en jouant sur un autre critere, j'aurais pu le faire en php, mais etant donnée que c'est debase que je crée pour la deultiplier avec les sites il m'aurais falut ne pas oublier ce detail

j'ai remplacer $

PL_SUBSCRIBDATE DATE NOT NULL DEFAULT curdate(),

par

PL_SUBSCRIBDATE TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,

ca fonctionne on verra ce que cela me donnera une fois que je lancerais le tout :)

merci de vos reponse en tout cas
0