I have a similar problem indexing a TEXT field. I am trying to create a
unique index on the first 1024 characters of a TEXT field:

        *       >mysql
        *       Welcome to the MySQL monitor.  Commands end with ; or \g.
        *       Your MySQL connection id is 66 to server version: 3.23.32
        *
        *       CREATE TABLE abc (
        *               f1      TEXT NOT NULL,
        *               f2      VARCHAR(20) NOT NULL,
        *               f3      VARCHAR(20) NOT NULL,
        *               f4      VARCHAR(20) NOT NULL,
        *               f5      TEXT NOT NULL,
        *
        *               # 255 works ok, 256 does not work.
        *               INDEX (f1(256))
        *       );
        *
        *       ERROR 1089 at line 3: Incorrect sub part key. The used key
part isn't a
        *       string or the used length is longer than the key part

According to the documentation, TEXT fields hold up to 2^16 characters, and
I can find no documented limitation on index size.

As it stands at present, I can only index the first 255 character, and
manually check for a duplicate record before inserting a new record.


David Robinson.

-----------------------------------
From: Mike Thompson 
Date: Wed, 07 Mar 2001 07:49:22 -0600 

Yes, I've tries that here is the error I get.

Your MySQL connection id is 247 to server version: 3.23.33

mysql>  CREATE TABLE foo(
    ->  id INT NOT NULL AUTO_INCREMENT,
    ->  name BLOB NOT NULL,
    ->  PRIMARY KEY(id),
    ->  UNIQUE(name(500))
    ->  );
ERROR 1089: Incorrect sub part key. The used key part isn't a string or
the used length is longer than the key part


Pat Sherrill wrote:
> 
> BLOBS and TEXT columns used as indices require the length to be
specifically
> enumerated.
> (Sec 7.26 of the manual)
> 
>  CREATE TABLE foo(
>  id INT NOT NULL AUTO_INCREMENT,
>  name BLOB NOT NULL,
>  PRIMARY KEY(id),
>  UNIQUE(name(500))
>  );
> 
> Pat...
> [EMAIL PROTECTED]
> 
> ----- Original Message -----
> From: "Mike Thompson" <[EMAIL PROTECTED]>
> To: "mysql" <[EMAIL PROTECTED]>
> Sent: Tuesday, March 06, 2001 1:51 PM
> Subject: key lengths
> 
> > How is key length for a table defined?  It seems that the default is 255
> > bytes, but in the online docs it mentions 500 byte keys.  I happen to
> > have some very long case sensitive strings that I need to use as keys,
> > but mysql complains when I try to create a table as such
> >
> > CREATE TABLE foo(
> > id INT NOT NULL AUTO_INCREMENT,
> > name BLOB NOT NULL,
> > PRIMARY KEY(id),
> > UNIQUE(name)
> > );
> >
> > Any thoughts?
> > --m
> >
> > ---------------------------------------------------------------------
> > Before posting, please check:
> >    http://www.mysql.com/manual.php   (the manual)
> >    http://lists.mysql.com/           (the list archive)
> >
> > To request this thread, e-mail <[EMAIL PROTECTED]>
> > To unsubscribe, e-mail
> <[EMAIL PROTECTED]>
> > Trouble unsubscribing? Try: http://lists.mysql.com/php/unsubscribe.php
> >

-- 
>--------------------------------------------------------<
Michael R. Thompson    Instanton Corporation
Sr. Software Developer 1250 Capital of Texas Highway South
[EMAIL PROTECTED]      Building  3 suite 200
328-1022x15            Austin, TX  78746
>--------------------------------------------------------<


---------------------------------------------------------------------
Before posting, please check:
   http://www.mysql.com/manual.php   (the manual)
   http://lists.mysql.com/           (the list archive)

To request this thread, e-mail <[EMAIL PROTECTED]>
To unsubscribe, e-mail <[EMAIL PROTECTED]>
Trouble unsubscribing? Try: http://lists.mysql.com/php/unsubscribe.php

Reply via email to