Problema de consulta: solo puede haber una columna automática

10

¿Puede alguien decirme qué hay de malo con esta definición de tabla?
la versión de mysql es 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
fuente
1
Me gusta esta pregunta (+1 para ti) porque presenta un problema de MySQL que es exclusivo de MyISAM. Preguntar por qué siempre es mucho mejor que darse por vencido y rediseñar.
RolandoMySQLDBA

Respuestas:

12

Aparentemente, esto funcionará con MyISAM como motor de almacenamiento, no con InnoDB, si puede vivir con eso.

Otra forma de hacerlo funcionar es intercambiando lugares de queuey idxen la declaración de clave primaria.

Gustav Barkefors
fuente
1

También puede dar idxsu propia clave si prefiere tener queueprimero en el PK. Tenga en cuenta la adición de la index(idx)línea:

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
fuente
-1

Intente eliminar el campo de cola de la clave primaria. Puede indexar la columna de la cola si lo desea

Prathab K
fuente
44
Ese tipo de derrota el punto de la tabla.
Nifle
44
¿Te das cuenta de que eso es lo que el autor de la pregunta intenta evitar?
jcolebrand