Erreur #1170 avec mysql lors de la création d'une base de donnée et quelques que [Résolu]

Signaler
Messages postés
192
Date d'inscription
dimanche 23 janvier 2005
Statut
Membre
Dernière intervention
10 août 2009
-
 Anonymous -
Bonjour, à tous.
 Je débute dans les bases de données.
J'ai commencé avec mysql.

J'ai réussi à créér des bases de données mais parfois j'ai un message d'erreur et je ne sais pas pourquoi.

En voici un exemple:

Erreur

requête SQL:


CREATE TABLE `user`(
`login` TINYTEXT NOT NULL,
`password` BLOB NOT NULL,
`time` INT UNSIGNED NULL,
`cookie` TINYTEXT NULL,
PRIMARY KEY (`login`)
)ENGINE = innodb



MySQL a répondu:

#1170 - BLOB/TEXT column 'login' used in key specification without a key length 


et j'ai quelques autres questions.

Primary key sert à autorisé qu'une seule fois la même valeur dans la collone mais à quoi sert "index" et "unique" et "texte entier"

Merci d'avance

2 réponses

Messages postés
2483
Date d'inscription
jeudi 30 novembre 2006
Statut
Membre
Dernière intervention
14 janvier 2011
15
Salut,

La réponse est dans le message d'erreur :

"BLOB/TEXT column 'login' used in key specification without a key length"
Pour traduire, pas besoin d'un DEA en langues étrangères, la doc de MySQL suffit :

Erreur: 1170 SQLSTATE: 42000 (ER_BLOB_KEY_WITHOUT_LENGTH)

Message: La colonne '%s' de type BLOB est utilisée dans une définition d'index sans longueur d'index

(c'est là : http://dev.mysql.com/doc/refman/5.0/fr/error-handling.html )

Ca veut simplement dire que pour indexer un champ BLOB ou TEXT (TIBYBLOB, TINYTEXT, VARCHAR, CHAR, etc) il faut spécifier combien de caractères seront indexés (les N premiers de chaque valeur du champ).

Essaie plutôt ça :

CREATE TABLE `user` (
`login` TINYTEXT NOT NULL ,
`password` BLOB NOT NULL ,
`time` INT UNSIGNED NULL ,
`cookie` TINYTEXT NULL ,
PRIMARY KEY ( `login`(32) )
) ENGINE = innodb;


Remplace 32 par la longueur que tu veux.
Messages postés
12303
Date d'inscription
mardi 10 février 2004
Statut
Modérateur
Dernière intervention
30 juillet 2012
35
Salut

CREATETABLE`user`(
`login` TINYTEXT NOT NULL,
`password` BLOB,
`time` INT UNSIGNED NULL,
`cookie` TINYTEXT NULL,
PRIMARY KEY (`login`)
)ENGINE=innodb

a mon avis t'as pas de valeur par defaut en NOT NULL sur un blob....

pourquoi tu mets un pass sur un champ blob et pas varchar .. ?

une recherche sur exalead vous aurait peut-etre evite de poser cette question

In a dream, I saw me, drop dead...
U were there, U cried...
It was just a dream,
if I die, U won't cry, maybe, U'll be happy
Sacré citation à la fin, je ne la comprend pas c'est de qui ?