Problema de consulta: pode haver apenas uma coluna automática

10

Alguém pode me dizer o que há de errado com esta definição de tabela.
a versão do mysql é 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
Nifle
fonte
11
Eu gosto desta pergunta (+1 para você) porque ela apresenta uma pegada do MySQL que é exclusiva do MyISAM. Perguntar por que é sempre muito melhor do que desistir e redesenhar.
RolandoMySQLDBA 30/06

Respostas:

12

Aparentemente, isso funcionará com o MyISAM como mecanismo de armazenamento, não com o InnoDB, se você puder conviver com isso.

Outra maneira de fazê-lo funcionar é se você trocar locais de queuee idxna declaração da chave primária.

Gustav Barkefors
fonte
1

Você também pode fornecer idxsua própria chave se preferir ter o queueprimeiro no PK. Observe a adição da index(idx)linha:

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)
);
Matthew Read
fonte
-1

Tente remover o campo da fila da chave primária. Você pode indexar a coluna da fila se desejar

Prathab K
fonte
4
Isso meio que derrota o ponto da mesa.
N
4
Você percebe que é isso que o solicitante está tentando evitar?
Jcolebrand