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

Résolu
dvdstory
Messages postés
192
Date d'inscription
dimanche 23 janvier 2005
Statut
Membre
Dernière intervention
10 août 2009
- Modifié le 18 mars 2020 à 17:49
 Anonymous - 18 mars 2020 à 15:06
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

neigedhiver
Messages postés
2480
Date d'inscription
jeudi 30 novembre 2006
Statut
Membre
Dernière intervention
14 janvier 2011
19
Modifié le 18 mars 2020 à 17:38
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.
3
coucou747
Messages postés
12303
Date d'inscription
mardi 10 février 2004
Statut
Membre
Dernière intervention
30 juillet 2012
41
Modifié le 18 mars 2020 à 17:42
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
0
Sacré citation à la fin, je ne la comprend pas c'est de qui ?
0