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

dvdstory 196 Messages postés dimanche 23 janvier 2005Date d'inscription 10 août 2009 Dernière intervention - 3 juin 2007 à 02:37 - Dernière réponse : neigedhiver 2492 Messages postés jeudi 30 novembre 2006Date d'inscription 14 janvier 2011 Dernière intervention
- 4 juin 2007 à 00:57
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
Afficher la suite 

2 réponses

Répondre au sujet
neigedhiver 2492 Messages postés jeudi 30 novembre 2006Date d'inscription 14 janvier 2011 Dernière intervention - 4 juin 2007 à 00:57
+3
Utile
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.
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de neigedhiver
coucou747 12336 Messages postés mardi 10 février 2004Date d'inscription 30 juillet 2012 Dernière intervention - 3 juin 2007 à 04:52
0
Utile
Salut

CREATETABLE`user`(
`login`TINYTEXTNOTNULL,
`password`BLOB,
`time`INTUNSIGNEDNULL,
`cookie`TINYTEXTNULL,
PRIMARYKEY(`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
Commenter la réponse de coucou747

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.