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

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 ...
 
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
 
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
 
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 ;
 
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 ...
 
la première erreur est une erreur de syntaxe

tu ouvres avec une apostrophe et tu fermes avec un backtrick

rog
 
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
 

➡️ Offre MyRankingMetrics ⬅️

pré-audit SEO gratuit avec RM Tech (+ avis d'expert)
coaching offert aux clients (avec Olivier Duffez ou Fabien Faceries)

Voir les détails ici

coaching SEO
Discussions similaires
Haut