10

Can someone please tell me what's wrong with this table definition.
mysql version is 5.1.52-log

root@localhost spoolrdb> create table spoolqueue (
                             queue int,
                             idx bigint not null auto_increment,
                             status smallint,
                             querystring varchar(2048),
                             contenttype varchar(255),
                             characterencoding varchar(16),
                             body text,
                             primary key(queue,idx)
                             );
ERROR 1075 (42000): Incorrect table definition; there can be only one auto column and it must be defined as a key
1
  • 1
    I like this question (+1 for you) because it presents a MySQL gotcha which is unique to MyISAM. Asking about why is always much better than giving up and redesigning. Jun 30, 2011 at 15:12

3 Answers 3

12

This will apparently work with MyISAM as storage engine, not InnoDB, if you can live with that.

Another way to get it to work is if you swap places of queue and idx in the primary key declaration.

1

You can also give idx its own key if you prefer to have queue first in the PK. Note the addition of the index(idx) line:

create temporary table spoolqueue (
    queue int,
    idx bigint not null auto_increment,
    status smallint,
    querystring varchar(2048),
    contenttype varchar(255),
    characterencoding varchar(16),
    body text,
    primary key(queue,idx),
    index(idx)
);
-1

Try removing the queue field from the primary key. You can index the queue column if you want

2
  • 4
    That kind of defeats the point of the table.
    – Nifle
    Jun 30, 2011 at 8:08
  • 4
    Do you realize that is what the asker is trying to avoid?
    – jcolebrand
    Jun 30, 2011 at 16:17

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

Not the answer you're looking for? Browse other questions tagged or ask your own question.