Problema di query: può esserci solo una colonna automatica


10

Qualcuno può dirmi cosa c'è che non va in questa definizione di tabella.
la versione di 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

1
Mi piace questa domanda (+1 per te) perché presenta un gotcha MySQL che è unico per MyISAM. Chiedere perché è sempre molto meglio che arrendersi e riprogettare.
RolandoMySQLDBA

Risposte:


12

Apparentemente funzionerà con MyISAM come motore di archiviazione, non InnoDB, se riesci a convivere con quello.

Un altro modo per farlo funzionare è se si scambiano i luoghi queuee idxnella dichiarazione della chiave primaria.


1

Puoi anche dare la idxsua chiave se preferisci avere la queueprima nel PK. Nota l'aggiunta della index(idx)linea:

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

Prova a rimuovere il campo della coda dalla chiave primaria. Se lo desideri, puoi indicizzare la colonna della coda


4
Quel tipo di sconfigge il punto del tavolo.
Nifle,

4
Ti rendi conto che è ciò che l'assistente sta cercando di evitare?
jcolebrand
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.