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

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

Votre réponse

2 réponses

Meilleure réponse
Messages postés
2492
Date d'inscription
jeudi 30 novembre 2006
Dernière intervention
14 janvier 2011
- 4 juin 2007 à 00:57
3
Merci
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.

Merci neigedhiver 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 88 internautes ce mois-ci

Commenter la réponse de neigedhiver
Messages postés
12336
Date d'inscription
mardi 10 février 2004
Dernière intervention
30 juillet 2012
- 3 juin 2007 à 04:52
0
Merci
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.