[MYSQL]j'arrive pas à trouver d'ou vient l'erreur...

WRInaute impliqué
Bonjour,

Voila le bout de code sql :

Code:
CREATE TABLE `theme` (
`ntheme` VARCHAR( 1000 ) NOT NULL ,
PRIMARY KEY ( `ntheme` )
)ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;

CREATE TABLE `media` (
`id_media` INT( 100 ) NOT NULL AUTO_INCREMENT ,
`titre` VARCHAR( 1000 ) NOT NULL ,
`ntheme` VARCHAR( 1000 ) NOT NULL ,
`url` VARCHAR( 2000 ) NOT NULL ,
`type` VARCHAR( 1000 ) NOT NULL ,
`vu` INT( 100 ) NOT NULL ,
PRIMARY KEY ( `id_media` ),
FOREIGN KEY ('ntheme') REFERENCES theme('ntheme') ON DELETE CASCADE ON UPDATE CASCADE
)ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;

et voici l'erreur lors de l'execution :
Code:
#1170 - La colonne 'ntheme' de type BLOB est utilisée dans une définition d'index sans longueur d'index

merci d'avance ...
 
WRInaute impliqué
Je ne pourrai répondre à ta question
Par contre créer un index sur un champ de 1000 caractères ce n'est pas vraiment optimal.
Tu devrais créer un index sous forme de int. Chaque int correspondrait à ton champ varchar.
Et tu positionnes ton index sur le int
à voir
 
WRInaute impliqué
j'ai essayé ceci mais ca marche pas :
Code:
CREATE TABLE `theme` (
'id_theme' INT( 100 ) NOT NULL AUTO_INCREMENT ,
`ntheme` VARCHAR( 1000 ) NOT NULL ,
PRIMARY KEY ( `id_theme` )
)ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;

CREATE TABLE `media` (
`id_media` INT( 100 ) NOT NULL AUTO_INCREMENT ,
`titre` VARCHAR( 1000 ) NOT NULL ,
`ntheme` INT( 100 ) NOT NULL ,
`url` VARCHAR( 2000 ) NOT NULL ,
`type` VARCHAR( 1000 ) NOT NULL ,
`vu` INT( 100 ) NOT NULL ,
PRIMARY KEY ( `id_media` ),
FOREIGN KEY ('ntheme') REFERENCES theme('id_theme') ON DELETE CASCADE ON UPDATE CASCADE
)ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;

erreur :
Code:
#1064 - Erreur de syntaxe près de ''id_theme' INT( 100 ) NOT NULL AUTO_INCREMENT ,
`ntheme` VARCHA' à la ligne 2
 
WRInaute impliqué
je dois pas avoir la même version de base de données
moi j'ai fais cela et celà fonctionne
Code:
CREATE TABLE `theme` (
`id_theme` INT NOT NULL AUTO_INCREMENT ,
`ntheme` LONGTEXT NOT NULL ,
PRIMARY KEY ( `id_theme` )
) TYPE = MYISAM ;
 
WRInaute impliqué
narayana a dit:
je dois pas avoir la même version de base de données
moi j'ai fais cela et celà fonctionne
Code:
CREATE TABLE `theme` (
`id_theme` INT NOT NULL AUTO_INCREMENT ,
`ntheme` LONGTEXT NOT NULL ,
PRIMARY KEY ( `id_theme` )
) TYPE = MYISAM ;

t'as pas executé le meme code que moi ,t'as utilisé MYISAM ...
 
WRInaute passionné
la première erreur est une erreur de syntaxe

tu ouvres avec une apostrophe et tu fermes avec un backtrick

rog
 
WRInaute impliqué
t'as raison ... :

Code:
CREATE TABLE `theme` (
`id_theme` INT( 100 ) NOT NULL AUTO_INCREMENT ,
`ntheme` VARCHAR( 1000 ) NOT NULL ,
PRIMARY KEY ( `id_theme` )
) ENGINE = InnoDB DEFAULT CHARSET = latin1 AUTO_INCREMENT =1;# MySQL n'a retourné aucun enregistrement.
CREATE TABLE `media` (
`id_media` INT( 100 ) NOT NULL AUTO_INCREMENT ,
`titre` VARCHAR( 1000 ) NOT NULL ,
`idtheme` INT( 100 ) NOT NULL ,
`url` VARCHAR( 2000 ) NOT NULL ,
`type` VARCHAR( 1000 ) NOT NULL ,
`vu` INT( 100 ) NOT NULL ,
PRIMARY KEY ( `id_media` ) ,
FOREIGN KEY ( `idtheme` ) REFERENCES theme( `id_theme` ) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE = InnoDB DEFAULT CHARSET = latin1 AUTO_INCREMENT =1;

merci pour ton aide
 
Discussions similaires
Haut